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();
对于不实现 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语言)