1.迭代器
- 遍历就是一个一个的把容器中的元素访问一边。
- 迭代器在Java中的代表是Iterator,迭代器是集合的专用遍历方式。
(1)Collection集合获取迭代器
方法名称 | 说明 |
Iterator<E> iterator() | 返回集合中的迭代器对象,该迭代器对象默认指向当前集合的0索引 |
(2)Iterator中的常用方法
方法名称 | 说明 |
boolean hasNext() | 询问当前位置是否有元素存在,存在返回true,不存在返回false |
E next() | 获取当前位置的元素,并同时将迭代器对象移向下一个位置,注意防止取出越界出现NoSuchElementException异常 |
/**
* 学习Collection集合的遍历方式——迭代器
*/
//1.得到当前集合的迭代器对象
Iterator<String> it = lists.iterator();
//2.定义while循环遍历,条件it.hasnext()判断是否存在下一个元素
while (it.hasNext()){
String ele = it.next();//获取当前位置的元素,同时迭代器移到下一个位置
System.out.println(ele);
}
2.foreach/增强for循环
- 增强for循环:既可以遍历集合也可以遍历数组。
- 它是JDK5之后出现的,其内部原理是一个Iterator迭代器,遍历集合相当于是迭代器的简化写法。
- 实现Iteratable接口的类才可以使用迭代器和增强for,Collection接口已经实现了Iterable接口。
格式:
for(元素数据类型 变量名 : 数组或者Collection集合){
//在此处使用变量即可,该变量就是元素
}
eg:
Collection<String> list = new ArrayList<>();
...
for(String ele : list){
System.out.println(ele);
}
3.lambda表达式
- 得益于JDK8开始的新技术Lambda表达式,提供了一种更简单,更直接的遍历集合的方式。
(1)Collection结合Lambda遍历的API
方法名称 | 说明 |
default void forEach(Consumer<? super T> action): | 结合Lambda遍历集合 |
Collection<String> lists = new ArrayList<>();
...
lists.forEach(new Consumer<String>(){
@Override
public void accept(String s){
}
});
//简写
lists.forEach(s -> {
System.out.println(s);
});
//list.forEach(s -> System.out.println(s));