问题描述
该 与Java 5中引入的,所以它不是那么“老”。
如果只想迭代一个集合,则应为每个循环使用
for (String str : myList) {
System.out.println(str);
}
但是有时hasNext()
“普通的” 方法对于检查 是否还有更多元素非常有用。
for (Iterator<String> it = myList.iterator(); it.hasNext(); ) {
String str = it.next();
System.out.print(str);
if (it.hasNext()) {
System.out.print(";");
}
}
您也可以调用it.remove()
以删除next返回的最新元素。
并ListIterator<E>
提供双向遍历it.next()
和it.prevIoUs()
。
因此,它们不是等效的。两者都需要。
解决方法
我正在浏览以下代码示例:
public class GenericTest {
public static void main (String[] args) {
ArrayList<String> myList = new ArrayList<String>();
String s1 = "one";
String s2 = "two";
String s3 = "three";
myList.add(s1); myList.add(s2); myList.add(s3);
String st;
Iterator<String> itr = myList.iterator();
while (itr.hasNext()) {
st = itr.next();
System.out.println(st);
}
}
}
我想知道使用Iterator接口的实现而不是使用普通的for-each循环有什么好处?
for ( String str : myList ) {
System.out.println(str);
}
如果此示例不相关,那么当我们应该使用Iterator时会是一个好的情况吗?
谢谢。