Java类集学习(五)集合的输出
来源:互联网 发布:乐视手机网络不稳定 编辑:程序博客网 时间:2024/05/22 11:38
集合的标准输出中提供了四种常见的输出方式:
Iterator:迭代输出,使用最多的输出方式;
ListIterator:Iterator的子接口,专门用于输出List中的内容;
Enumeration:旧的接口,功能与Iterator类似;
foreach:可以输出数组或集合。
1、Iterator 迭代输出
所谓迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出。
Iterator接口在使用时需要指定泛型,此处指定的泛型要与集合中的类型一致。
实例化Iterator接口:Iterator<集合的泛型类型> iter = 集合的实例.iterator();
(1)输出Collection中的全部内容
Iterator接口可以直接使用Collection接口中定义的Iterator()方法为其实例化,所以List和Set子接口中也可以使用Iterator接口输出。
hasNext()方法返回Boolean类型:是否有下一个
next()方法返回的是集合泛型指定的类型:取内容
public class IteratorDemo01 {/** *Iterator接口,迭代输出Collection中的全部内容 */public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("Hello");list.add("_");list.add("world");System.out.println("集合内容:"+list);Iterator<String> iter = list.iterator();System.out.print("内容输出:");while(iter.hasNext()){System.out.print(iter.next()+"、");}}}
输出结果:
集合内容:[Hello, _, world]内容输出:Hello、_、world、
(2)输出Map的全部内容
对于Map接口不能直接使用迭代输出(Iterator、foreach),因为Map接口的每个位置存放的是一对值(key--->value),而Iterator中每次只能找到一个值。
要用Iterator就需要把Map--------->Set接口的对象,迭代出的每个内容都是Map.Entry对象,具体步骤:
a、Map接口实例通过entrySet()方法变为Set接口对象;
b、通过Set的实例为Iterator实例化;
c、使用Iterator迭代输出,每个内容都是Map.Entry的对象;
d、通过Map.Entry进行key-value的分离。
public class IteratorDemo04 {public static void main(String[] args) {Map<Object,String> map = new HashMap<Object,String>();map.put(1, "zhangsan");map.put(2, "lisi");map.put(3, "wangwu");//声明Set集合(泛型为Map.Entry类),用Map的实例map对Set接口实例化Set<Map.Entry<Object,String>> allSet = map.entrySet();//声明Iterator接口(泛型与Set一致),对其实例化Iterator<Map.Entry<Object, String>> iter = allSet.iterator();//迭代输出while(iter.hasNext()){//找到Map.Entry实例Map.Entry<Object, String> me = iter.next();System.out.println(me.getKey()+"--->"+me.getValue());}}}输出结果:
1--->zhangsan2--->lisi3--->wangwu(3)删除集合的指定内容
Iterator中的remove()方法
public class IteratorDemo02 {/** * 删除内容 */public static void main(String[] args) {List<String> all = new ArrayList<String>();all.add("hello");all.add("_");all.add("world");System.out.println("创建的集合内容:"+all);Iterator<String> iter = all.iterator();while(iter.hasNext()){String str = iter.next();if("_".equals(str)){iter.remove();}}System.out.println("删除之后:"+all);}}输出结果:
创建的集合内容:[hello, _, world]删除之后:[hello, world]
2、ListIterator 双向迭代输出
此种输出方式只有List接口可以做到
由前向后:.next(); 由后向前:.previous()
若想完成由后向前输出,必须先进行由前向后输出。
3、foreach
foreach可以完成数组或集合的输出,
for(类 对象 :集合){
// 集合操作
}
public class ForEachDemo {/** * foreach输出集合内容 */public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("aaa");list.add("bbb");list.add("ccc");//String:集合指定的泛型;str:命名的对象;list:集合实例。输出对象for(String str : list){System.out.println(str);}}}输出结果:
aaabbbccc总之,集合的输出最常用的几种方式:for循环,Iterator,foreach
对于ArrayList,Vector 其核心是一个数组, 如果明确知道List的实例是ArrayList,Vector,当然用 for(int i=0; i<lst.size();i++){} 这种方式是最快的. 当然用Iterator 的话,其实是相关无几,Iterator 基本上都是指针操作, Iterator本身的处理会增加一点点的开销,跟踪一下源码就可以知道.
Iterator 好处:通用,对于所有集合,使用Iterator性能都一样, 客户端自身不维护遍历集合的"指针",所有的内部状态(如当前元素位置,是否有下一个元素)都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。
客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。
foreach和Iterator差不多,核心是一样的。
- Java类集学习(五)集合的输出
- Java集合类的学习(五)——Map
- java学习笔记(五)集合续
- 关于Java多线程和并发运行的学习(五)——同步集合类
- java学习 表达式集合输出
- java学习——java基础(五)之集合类
- Java集合类的学习(一)
- Java 集合类的学习
- java集合类的学习
- Java集合(五):Set集
- Java集合(五):Set集
- Java学习笔记之集合(五):HashSet集合的实现原理
- java学习之路-----集合------输出
- Hibernate深入学习(五):集合的检索策略
- LibSVM学习(五)——分界线的输出
- LibSVM学习(五)——分界线的输出
- LibSVM学习(五)——分界线的输出
- LibSVM学习(五)——分界线的输出
- 「拼房」你敢吗?这款App这样玩「陌生人社交」
- MaterialRefreshLayout(下拉刷新和上拉加载)
- OC基础概念理解—多态
- css盒模型
- android中ViewPage使用的细节问题
- Java类集学习(五)集合的输出
- 命令行的艺术
- zookeeper原理(转)
- Hive原理
- 软件测试过程模型-H模型
- The Creation of Process 0 & 1 on ARM Architecture
- 本地推送.极光推送.APNs推送
- iOS开发-进阶: NSNotificationCenter 通知机制简介
- 详解likely和unlikely函数