java.lang.Iterable
java.util.Iterator
来自百度知道:
Iterator是迭代器类,而Iterable是接口。
好多类都实现了Iterable接口,这样对象就可以调用iterator()方法。
一般都是结合着用,比如
HashMap类就实现了Iterable接口,而要访问或打印出Map中所有内容时,就可以这样: HashMap hashMap;
Iterator iter = hashMap.iterator();
while(iter.hashNext()) {
String s = iter.next();
}
转至:http://liuyun025.iteye.com/blog/1321045
为什么一定要实现Iterable接口,为什么不直接实现Iterator接口呢?
看一下JDK中的集合类,比如List一族或者Set一族,都是实现了Iterable接口,但并不直接实现Iterator接口。
仔细想一下这么做是有道理的。
因为Iterator接口的核心方法next()或者hasNext() 是依赖于迭代器的当前迭代位置的。
如果Collection直接实现Iterator接口,势必导致集合对象中包含当前迭代位置的数据(指针)。
当集合在不同方法间被传递时,由于当前迭代位置不可预置,那么next()方法的结果会变成不可预知。
除非再为Iterator接口添加一个reset()方法,用来重置当前迭代位置。
但即时这样,Collection也只能同时存在一个当前迭代位置。
而Iterable则不然,每次调用都会返回一个从头开始计数的迭代器。
多个迭代器是互不干扰的。
分享到:
相关推荐
java 中 Iterator 与Iterable的作用;java语言需要更多基础沉淀,扎扎实实,后面的各种项目都会如何天翼。进行更高阶的用法和一些框架的原理都离开最基础的东西,基础虽然枯燥,但是也很有乐趣。
下面小编就为大家带来一篇java集合_浅谈Iterable和Iterator的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Iterator和Iterable 学习任何类和文档最标准的解释当然还是从jdk API里面学习,因为这个是最准确不过的东西了。想看API文档 Iterable java.lang包中 并且Collection继承了Iterable接口。 原创文章 3获赞 10访问量 ...
在本文中小编给大家分享了关于Java中Iterable与Iterator的用法知识点内容,有兴趣的朋友们可以学习下。
一个iterator_jsonDemo. 1.通过iterable接口和iterator实现迭代输出。2.通过JSONArray实现输出(自带json相关jar包)。供参考。
-、Iterator Iterable ListIterator 二、Map 和 Collection 接口Map 集合体系详解 HashMap LinkedHashMap TreeMap WeakHashMap Hashtable Collection 集合体系详解 Set 接口 AbstractSet 抽象类SortedSet 接口...
每个标量类型都有Iterable,Iterator,Collection和List接口的实现。 该库还为仅具有Iterable接口的对象提供了诸如contains和indexOf之类的有用方法。 是的。 之所以有些愚蠢,是因为所有实现之间的区别仅在于类型...
- Iterator Iterable ListIterator - Map 和 Collection 接口 - Map 集合体系详解 - HashMap - LinkedHashMap - TreeMap - WeakHashMap - Hashtable - Collection 集合体系详解 - Set 接口 - AbstractSet...
容器中的设计模式迭代器模式Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个
1.核心接口:Iterator(迭代器接口)Iterable(可迭代接口) -> Collection(集合接口)-> List(列表,线性表接口) :ArrayList、LinkedList-> Set(元素不重复的集合接口):HashSet、TreeSet-> Queue(队列): ...
iter(iterable) 从可迭代对象中返回一个迭代器,iterable必须是一个能提供迭代器的可迭代对象 next(iterator) 从迭代器iterator中获取下一条记录,如果无法获取下一条记录,则触发StopIteration 异常 说明: 迭代器...
Java:设计一个接口interface linearList,设计一个类class doubleChainNode相当于C++中的结构体,设计一个类class doubleChainjava实现了了接口linearList所有方法,以及实现迭代器接口Iterable中的一个方法...
java8-utils 该软件包提供了用于与Java 8及更高版本的流功能进行交互的辅助方法。 玛文 <groupId>com.nitorcreations</groupId> <artifactId>java8utils <version>1.0.0 Gradle compile '...
java 集合源码 JDK-Collection集合入门 总的list和set类结构大致如下所示 Map不继承Collection,其结构如下 首先介绍下迭代器的概念 迭代器无非是一个接口,假设我们有一个数组,如果我们要实现迭代器,只需要根据该接口...
moon-core库是多年来从自由职业者、业余爱好和专业工作中积累的代码的结果。 跨平台/通用的东西进入这个项目。 这个图书馆的一些东西 核 使用 deepEquals,抽象位操作,便于比较和排序。 用于 Pythonesque 整数迭代...
import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Scanner; public class Stack<Item> implements Iterable<Item> { private int N; private Node<Item> first; ...
:hot_beverage: Java Collection Linq和分析器项目图书馆 :package: 为了帮助开发人员操纵可迭代集合或数组,linq原理如何选择,查找,过滤,分组和操纵这些集合上的元素。 您可以生成地图组以帮助数据分析,按设置...
借助实现Iterable的容器Iterable提供的Iterator ( LinkedList , TreeSet ),您可以使用著名人物的示例来计算有关推文的统计信息。 这项任务的目的 首先,逐步将推文( String s)编入索引,以计算哪个单词出现的...