Collection集合遍历的方式有三种:
- 迭代器
- foreach/增强for循环
- lambda表达式
一、迭代器遍历
遍历就是一个一个的把容器中的元素访问一遍。
迭代器在Java中是Iterator代表的,迭代器是集合的专用遍历方式
1.创建迭代器
Iterator<T> it = list.iterator();
2.迭代器在遍历集合时候不依赖索引
3.迭代器需要掌握的三个方法
- hasNext(); //返回布尔类型,判断当前迭代器指向的位置是否为空。
- next(); //返回迭代器当前位置的数据并指向下一个位置。
- remove();//从迭代器指向的collection中移除迭代器返回的最后一个元素。
4.迭代器的三个细节
- 如果当前位置没有元素还要强行获取,会报NoSuchElementException错误
- 迭代器遍历完毕指针不会复位,想要重新遍历需要重新创建一个新的迭代器
- 一个迭代器遍历的循环中只能用一次next()方法。
二、增强for遍历
1.既可以遍历集合也可以遍历数组
2.它是JDK5之后出现的, 其内部原理是一个Iterator迭代器, 遍历集合时, 相当于是迭代器的简化写法
3.实现Iterable接口的类才可以使用迭代器和增强for, Collection接口已经实现了Iterable接口
4.底层也是迭代器,为了简化迭代的代码书写而出现。
5.所有单列集合和数组才能用增强for遍历。
for(元素数据类型 变量名 : 数组或者Collection集合) {
//在此处使用定义的变量即可,该变量就是元素
}
三、Lambda表达式遍历
得益于JDK 8开始的新技术Lambda表达式,提供了一种更简单、更直接的遍历集合的方式。
List.forEach(new Consumer<T> (){
@Override
Public void accept(T s){
Sout(s);
}
});
public static void main(String[] args) {
// 创建String类型的集合
Collection<String> list = new ArrayList<String>();
list.add("aaa");
list.add("bbb");
list.add("aaa");
// foreach方法结合Lambda表达式
list.forEach(s -> System.out.println(s));
}