在哪些情况下应该通过 Collection,在哪些情况下通过 Iterator?(特别是如果您只需要遍历所有元素)。Bruce Eckel 在“Java 哲学”一书中(第 354 页)写道
在编写 Collection 接口的实现困难或不切实际的类时,Iterator 解决方案看起来很有吸引力。
这在现代版本的 Java 中也有关系吗?
代码示例:
//:holding/InterfaceVsIterator.java
import typeinfo.pets.*;
import java.util.*;
public class InterfaceVsIterator{
public static void display(Iterator<Pet> it){
while(it.hasNext()){
Pet p=it.next();
System.out.print(p.id()+":"+p+"");
}
System.out.println();
}
public static void display(Collection<Pet> pets){
for(Pet p:pets)
System.out.print(p.id()+":"+p+"");
System.out.println();
}
...
他为什么要给班级打电话InterfaceVsIterator?Iterator它也是一个界面。
主要区别在于,通过迭代器我们可以将集合遍历行为从集合本身移动到一个单独的类中,并且可以有任意多个(绕过实现),还可以实现一些复杂的逻辑并更改集合的内容。
尽管 ide 本身建议用 lambda 替换它
这是foreach循环,只有阅读,你不能改变元素
您可以自己查看在 ide 中迭代集合的不同实现,您可以键入它

而关于 Collection 或 Iterator 的选择,在迭代器中需要重写 2 个方法,并且在集合中超过 10 个。主要问题是为什么要编写自己的集合?