在Java中使用迭代器有什么好处

问题描述

该 与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时会是一个好的情况吗?

谢谢。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”