【发布时间】:2014-06-30 07:23:25
【问题描述】:
为什么第一个版本的代码不起作用
// returns the longest string in the list (does not work!)
public static String longest(LinkedList<String> list) {
Iterator<String> itr = list.iterator();
String longest = itr.next(); // initialize to first element
while (itr.hasNext()) {
if (itr.next().length() > longest.length()) {
longest = itr.next();
}
}
return longest;
}
但是第二个版本的代码会吗?
// this version of the code is correct
while (itr.hasNext()) {
String current = itr.next();
if (current.length() > longest.length()) {
longest = current;
}
}
【问题讨论】:
-
在迭代器上调用 .next 会移动到下一个元素。您在 while 循环中调用了它两次。
-
每次你调用
next()你都会得到一个新对象。