list集合的遍历方法

list集合的遍历方法

一般来讲,遍历集合数据有三种方法:for 循环、foreach 循环、iterator 迭代器。
实际上,foreach 循环只是一个语法糖而已,底层是基于迭代器来实现的。foreach 循环代码的底层实现,就是第三种遍历方式(迭代器遍历)。这两种遍历方式可以看作同一种遍历方式,也就是迭代器遍历方式。

第一种方式 增强for循环 for(类型 变量:集合)
for (Object obj:list){
    System.out.println(obj);
}
第二种方式 通过迭代器for循环拿到数据
//迭代器 通过Collection的iterator()拿到迭代器
Iterator iterator = list.iterator();
//next()将指针下移 拿到数据
for (int i = 0; i < list.size(); i++) {
    System.out.println(iterator.next());
}
第三种方式 通过迭代器的 hasNext() 方法判断下面是否还有数据
//迭代器 通过Collection的iterator()拿到迭代器
Iterator iterator = list.iterator();        
//通过迭代器的 hasNext() 方法判断下面是否还有数据 如果有返回true 没有返回false
while(iterator.hasNext()) {
    System.out.println(iterator.next());
}
补充List遍历可以使用普通的for遍历
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

注意:
1、 为每次调用 iterator()都会返回一个新的迭代器对象 不能这么使用 否则会死循环

Iterator iterator = list.iterator();
while(list.iterator().hasNext()) {
    list.iterator().next();
    System.out.println(list.iterator().next());
}

2、 移除数据操作必须在next之后 不能同时调用两次remove()

while (iterator.hasNext()) {
    iterator.next();
    iterator.remove();
    iterator.remove();