【发布时间】:2019-11-26 17:50:10
【问题描述】:
我只是想知道,内部迭代与外部迭代的真正好处是什么,以及为什么使用内部操作更好(至少我听说过)。 是否也可以在内部迭代集合时删除集合的元素?就像在代码示例中一样:
我知道内部迭代的代码可读性更好,但是还有其他一些好处,比如性能提升吗?
//List with Strings of Fruit-Names
Iterator i = aList.iterator();
String str = "";
while (i.hasNext()) {
str = (String) i.next();
if (str.equals("Orange")) {
i.remove();
System.out.println("\nThe element Orange is removed");
break;
}
}
【问题讨论】:
-
这段代码没有任何好处。只需使用
if (aList.remove("Orange")) System.out.println(...)。 -
@AndyTurner:有时,你不能这样做。而“有时”我的意思是“如果你经常使用你无法控制并且没有实现
equals或hashCode的类。” -
如果您好奇您的迭代器与内部迭代器的对比情况,请查看 OpenJDK 源代码,例如。
ArrayList:github.com/openjdk/jdk/blob/… -
在流的情况下,您只需使用一个命令即可开始并行处理,例如
parallelStream()或stream().parallel()
标签: java iteration java-stream internals