gpt4 book ai didi

java - 迭代器无法再次迭代

转载 作者:行者123 更新时间:2023-12-02 00:14:07 25 4
gpt4 key购买 nike

这是我的 Java 代码:

public static void main(String[] args) {  
Map<String, String> map = new HashMap<String, String>();
map.put("_name", "name");
map.put("_age", "age");
Set<String> set = map.keySet();
Iterator iterator = set.iterator();
// the first iteration
StringBuffer str1 = new StringBuffer();
while (iterator.hasNext()) {
str1.append(iterator.next() + ",");
}
String str1To = str1.substring(0, str1.lastIndexOf(",")).toString();
System.out.println(str1To);
// the second iteration
StringBuffer str2 = new StringBuffer();
while (iterator.hasNext()) {
str2.append(iterator.next() + ",");
}
String str2To = str2.substring(0, str2.lastIndexOf(",")).toString();// ?????
System.out.println(str2To);
}

我的问题是,为什么第二个循环不迭代?第一次迭代是否已经将迭代器带到了末尾?这会影响第二次迭代吗?

如何修复它?

最佳答案

您的第一个 while 循环将移动 iterate,直到 iterator 到达列表末尾。此时,迭代器本身指向列表的末尾,在您的例子中是map.keySet()。这就是下一个 while 循环失败的原因,因为对 iterator.hasNext() 的调用返回 false

更好的方法是使用 Enhanced For Loop ,像这样而不是你的 while 循环:

for(String key: map.keySet()){
//your logic
}

关于java - 迭代器无法再次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12208365/

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