List遍历的八种写法
最近在使用List的时候看到了非常方便遍历方法,汇总一下发现竟然有这么多种写法。具体如下:
package com.test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.function.Consumer;
/**
* @author 蓝带
* @date 2020/9/17 0017 0:07
*/
public class ListTraverse {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
// one 原始for
System.out.println("方法1开始:");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println("方法1结束\n");
// two 增强for
System.out.println("方法2开始:");
for (int item : list) {
System.out.println(item);
}
System.out.println("方法2结束\n");
// three 迭代器
System.out.println("方法3开始:");
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
System.out.println("方法3结束\n");
// four forEach(JAVA8)
System.out.println("方法4开始:");
list.forEach(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println(integer);
}
});
System.out.println("方法4结束\n");
// five Lambda表达式
System.out.println("方法5开始:");
list.forEach(item -> System.out.println(item));
System.out.println("方法5结束\n");
// six Lambda表达式进阶
System.out.println("方法6开始:");
list.forEach(System.out::println);
System.out.println("方法6结束\n");
// seven Lambda表达式+stream
System.out.println("方法7开始:");
list.stream().forEach(item -> System.out.println(item));
System.out.println("方法7结束\n");
// eight Lambda表达式+stream进阶
System.out.println("方法8开始:");
list.stream().forEach(System.out::println);
System.out.println("方法8结束\n");
}
}
运行结果如下图:
目前我了解到的就这几种了,欢迎留言批评指正。
本人使用最多的List遍历还是第5种,还挺方便,但是涉及到一些对List元素操作用的还是第2种(好丢人)。看到高手用stream()对List的一通操作着实羡慕,也真正意识到如果能熟练使用stream()和Lambda表达式,对集合的操作代码就能大大缩短,还不熟练的小伙伴一起加油,欢迎分享学习经验。