java中的Iterator和Iterable 区别 ,以及为么要有iterable接口
来源:互联网 发布:合金装备5连接网络 编辑:程序博客网 时间:2024/06/05 05:46
java.lang.Iterable
java.util.Iterator
来自百度知道:
Iterator是迭代器类(其实在javaAPI中其也是一个接口),而Iterable是接口。
好多类都实现了Iterable接口,这样对象就可以调用iterator()方法(返回一个Iterator对象)。
一般都是结合着用,比如
HashMap类就实现了Iterable接口,而要访问或打印出Map中所有内容时,就可以这样: HashMap hashMap;
Iterator iter = hashMap.iterator();
while(iter.hashNext()) {
String s = iter.next();
}
转至: http://perfy315.iteye.com/blog/1459201
为什么一定要实现Iterable接口,为什么不直接实现Iterator接口呢?
看一下JDK中的集合类,比如List一族或者Set一族,都是实现了Iterable接口,但并不直接实现Iterator接口。
仔细想一下这么做是有道理的。
因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。
如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。
当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。
除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。
但即时这样,Collection也只能同时存在一个当前迭代位置。
而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。
多个迭代器是互不干扰的。
java.util.Iterator
来自百度知道:
Iterator是迭代器类(其实在javaAPI中其也是一个接口),而Iterable是接口。
好多类都实现了Iterable接口,这样对象就可以调用iterator()方法(返回一个Iterator对象)。
一般都是结合着用,比如
HashMap类就实现了Iterable接口,而要访问或打印出Map中所有内容时,就可以这样: HashMap hashMap;
Iterator iter = hashMap.iterator();
while(iter.hashNext()) {
String s = iter.next();
}
转至: http://perfy315.iteye.com/blog/1459201
为什么一定要实现Iterable接口,为什么不直接实现Iterator接口呢?
看一下JDK中的集合类,比如List一族或者Set一族,都是实现了Iterable接口,但并不直接实现Iterator接口。
仔细想一下这么做是有道理的。
因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。
如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。
当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。
除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。
但即时这样,Collection也只能同时存在一个当前迭代位置。
而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。
多个迭代器是互不干扰的。
- java中的Iterator和Iterable 区别 ,以及为么要有iterable接口
- java中的接口Iterator和Iterable的区别
- java中的Iterator和Iterable 区别
- java中的Iterator和Iterable 区别
- java中的Iterator和Iterable 区别
- Java中的Iterator和Iterable的区别
- java中的Iterator和Iterable 区别
- java中的Iterator和Iterable 区别
- java中的Iterator和Iterable 区别
- java中的Iterator和Iterable 区别
- java中的Iterator和Iterable 区别
- java中的Iterator和Iterable 区别
- java中的Iterator和Iterable 区别
- Java中的Iterable和Iterator
- Iterator接口和Iterable接口的区别
- Iterator和Iterable接口
- Java迭代器:iterator和iterable接口的区别
- Iterator 和 Iterable 接口的区别
- VC技术内幕笔记
- Java程序持续Full GC的处理经历(转)
- 面试题整理-合并数组
- 将自定义对象作为元素存到ArrayList集合中,并去除重复元素
- 对象数组或list排序及Collections排序原理
- java中的Iterator和Iterable 区别 ,以及为么要有iterable接口
- 浅谈大型网站的算法和架构(1)
- 关于函数strtok和strtok_r的使用要点和实现原理
- OSGi的EventAdmin
- UNIX文件结构(转自UNIX/AIX操作系统基础教程)
- http中的gzip
- UVa 10125 - Sumsets
- 【OI杂记】求二叉树上任意两点的最短路径上的边权最大值
- Fedora 17 下运行Kettle遇到"A fatal error has been detected by the Java Runtime Environment"