Java里的实现了Iterable的类用iterator遍历完后怎么再次遍历?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java里的实现了Iterable的类用iterator遍历完后怎么再次遍历?相关的知识,希望对你有一定的参考价值。

下面两次遍历,第一次遍历正常,第二次遍历就什么也没有了,是怎么回事?是不是List类都会这样的?我怎样重新遍历?
for(Text val:values)
System.out.print(val.toString() + ",");

System.out.println();
for(Text val:values)
System.out.print(val.toString() + ",");

System.out.println();

参考技术A 在创建一个iterable对象 参考技术B Text 对象里的toString()方法是否有数据操作动作? 参考技术C 好了,我们来看下Java Collection中的迭代器是怎么实现的吧。 //迭代器角色//ArrayList实现了Iterable接口,因此可以用for-each循环遍历(JDK1.5以上)

对于不实现 Iterable 的类,如何使用 for-each 循环

【中文标题】对于不实现 Iterable 的类,如何使用 for-each 循环【英文标题】:How is it possible to use the for-each loop for classes that do not implement Iterable 【发布时间】:2015-09-21 03:33:24 【问题描述】:

我正在阅读 The Complete Reference 的集合,然后我遇到了这个声明

集合界面

集合接口是集合的基础 构建框架是因为它必须由任何类实现 定义一个集合。 Collection 是一个通用接口,它有这个 声明:interface Collection<E>。这里,E 指定类型 集合将持有的对象。集合扩展了 Iterable 接口。这意味着所有集合都可以通过 使用 for-each 样式的 for 循环。(回想一下,只有那些 实现Iterable可以通过for循环)。

最后两行写着只有那些实现了Iterable接口的类才能循环通过for循环。 但是,我猜对象类没有实现可迭代接口,那么我们如何在字符串、整数等情况下使用 for-each 循环。

【问题讨论】:

Recall that only classes that implement Iterable can be cycled through by the for. 还有数组,别忘了数组。 【参考方案1】:

确实如此。 java.lang.Object 没有实现Iterable<T> 接口。

我们可以遍历对象,因为对象持有者(例如Collection)自动实现Iterable<T>,不一定是集合的对象部分。

【讨论】:

@Crazyjavahcking-哦,,,知道了,伙计。 为什么有这么多粗体字?【参考方案2】:

如果您正在遍历字符串或整数的集合,则 collection 是可迭代的,而不是字符串或整数。迭代中的项目不必是可迭代的;容器可以。

【讨论】:

【参考方案3】:

你永远不会想要遍历一个整数,也永远不会做这样的事情。整数是单个实体,而可迭代接口是指实体集合。例如:

List<Integer> intList = new ArrayList<Integer>();

for (Integer i : intList) 
   System.out.println(i);

【讨论】:

以上是关于Java里的实现了Iterable的类用iterator遍历完后怎么再次遍历?的主要内容,如果未能解决你的问题,请参考以下文章

请问java中的Iterator和Iterable有些啥区别啊?

设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。(Java语言)

对于不实现 Iterable 的类,如何使用 for-each 循环

maven项目不是有main和test文件夹吗?

Java rt 包

始终要覆盖toString实现可以使类用起来更加舒服