更新时间:2022-07-18 10:38:22
for的形式是for(int i=0;i<arr.size();i++){...}
foreach的形式是for(int i:arr){...}
iterator的形式是
Iterator it = arr.iterator();
while(it.hasNext()){ object o =it.next(); ...}
for和foreach都需要先知道集合的类型,甚至是集合内元素的类型,即需要访问内部的成员,不能实现态;
iterator是一个接口类型,他不关心集合或者数组的类型,而且他还能随时修改和删除集合的元素,举个例子:
public void display(Iterator<object> it){
while(it.hasNext()){
system.out.print(it.next()+"");
}
}
当我们需要遍历不同的集合时,我们只需要传递集合的iterator(如arr.iterator())看懂了吧,这就是iterator的好处,他不包含任何有关他所遍历的序列的类型信息,能够将遍历序列的操作与序列底层的结构分离。迭代器统一了对容器的访问方式。这也是接口的解耦的***体现。
同样遍历一个集合,iterator和foreach用时不相上下。for循环用时最少。