java中iterator的Next()遍历完之后怎么回到起点

List<String>coll=newArrayList<String>();//LinkedList();//ArrayList();;coll.add("is");... List<String> coll = new ArrayList<String>(); //LinkedList(); //ArrayList();;
coll.add("is");
coll.add("Sunday.");
// Output all elements by iterator
Iterator it = coll.iterator();
System.out.println(it.hasNext());
while(it.hasNext()) {
System.out.println(it.next() + " ");
}
如题
有没有好的方法
还有

Iterator it = coll.iterator();为什么要放在coll.add();之后 不然会出错
展开
 我来答
jamxval
推荐于2017-10-11 · TA获得超过6821个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1386万
展开全部
重新得到一个新的 Iterator 对象(还是调用 coll.iterator())。所谓遍历嘛,你已经“遍”过,下次再“遍”当然要重新开始了。

如果你的集合中都没东西,你当然就没有“遍”的必要,当然是我们往集合中添加了东西我们才要遍历一下看一下其中的东西嘛。不过有一点,在迭代的过程中不能直接修改集合。比如:
for(Iterator iter = list.iterator(); iter.hasNext(); ) {
list.add("afewfe"); // 这个操作是非法的,它导致 iter 内缓存的位置索引失效,结果不可预料。
}

Java 中的迭代器是指你想对集合中的每一个元素做个操作,这个时候就不能再在不通知迭代器的情况下直接改这个集合了,通常我们为了确保迭代器在迭代过程中的位置索引是有一致的,我们支持的修改操作很有限,比如:
for(Iterator iter = list.iterator(); iter.hasNext(); ) {
Object current = iter.next();
// 如果是我们想找的,删除它。
if ( current == aaa) {
iter.remove(); // 删除当前的。这个时候迭代器知道我们修改了集合,而且我们只能删除当前位置的东西,这个迭代器内部的位置索引就没有问题,如果我们删除任意位置的元素,那么迭代器当前保持的位置索引就没有意义,因此不能直接 add 或 remove 任意位置,只能通过迭代器来删除当前位置的。
}
}

for(ListIterator iter = list.listIterator(); iter.hasNext(); ) {
// 这个 ListIterator 比 Iterator 多些方法可用,因为 List 与其它集合相对它是有序的。
}
benbc5200
2014-10-26
知道答主
回答量:9
采纳率:0%
帮助的人:5.5万
展开全部
关于iterator的Next()遍历完之后怎么回到起点,你可以重新it=coll.iterator(),就可以回到起点。
最后的问题,一般不会出错,这个顺序没有关系的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式