gpt4 book ai didi

java - Java 迭代器的奇怪行为

转载 作者:行者123 更新时间:2023-12-01 21:53:21 25 4
gpt4 key购买 nike

我在使用 Java 迭代器时遇到了一个奇怪的问题。

在某个函数中,a 接收一个名为 filelist 的可迭代对象。 ,然后我执行以下操作:

System.out.println("First iteration:");
for(Text t : filelist) System.out.println(t);
System.out.println("Second iteration:");
for(Text t : filelist) System.out.println(t);

输出是:

First iteration:

file2.txt

file1.txt

file1.txt

Second iteration:

filelist类型为Iterable<Text> 。我正在使用 Hadoop 映射/归约框架。

所以我的问题是,为什么文件列表在第二个循环中为空,而我没有在第一个循环中更改它?

最佳答案

Iterable 可能会返回不可重复的迭代器。它的界面中没有任何内容表明它不能。因此,在您的情况下,似乎 Iterable 是由库作者设计的,只能使用一次。如果你想第二次迭代,你需要将值存储在你自己的结构中。 IE。你可以先做

List<Text> myList = new ArrayList(filelist)

关于java - Java 迭代器的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34831287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com