10000数据
for循环
首先,10000数据的for循环,代码如下:
public class ForTest {public static void main(String[] args) {Long startTime = System.currentTimeMillis();formMethod();Long endTime = System.currentTimeMillis();System.out.println("time_total:" + (endTime - startTime));}public static void formMethod(){for (int i = 0; i < 10000; i++) {System.out.println("__________for循环____________");}}}
foreach循环
同样数据量,代码如下:
public class ForTest {public static void main(String[] args) {List<Integer> lists = new ArrayList<>();for (int i = 0; i < 10000; i++) {lists.add(i);}Long startTime = System.currentTimeMillis();formMethod(lists);Long endTime = System.currentTimeMillis();System.out.println("time_total:" + (endTime - startTime));}public static void formMethod(List<Integer> lists){lists.forEach(i->{System.out.println("__________forEach____________");});}}
测试结果:
运行多次,时间基本落在150左右。增强型效果不如for循环~
Stream
同样数据量,代码如下:
public class ForTest {public static void main(String[] args) {List<Integer> lists = new ArrayList<>();for (int i = 0; i < 10000; i++) {lists.add(i);}Long startTime = System.currentTimeMillis();formMethod(lists);Long endTime = System.currentTimeMillis();System.out.println("time_total:" + (endTime - startTime));}public static void formMethod(List<Integer> lists){lists.stream().forEach(i->{System.out.println("__________stream处理____________");});}}
测试结果:
基本和增强型for循环效率差别不大。
:::success
结论:1万以内的数据,for循环的性能要高于foreach和stream;
:::
1000万数据
for循环
foreach循环
Stream

基本和for循环,增强型for循环效率差别不大。
Stream的优势在于,提供了并行处理(parallelStream()方法),即stream api提供了异步处理机制,可以充分利用CPU核数,大大提升效率!
:::success
结论:数据量上去之后,测试三种遍历方式,基本已经没有什么差距了,但是Stream提供并行处理,在数据量大了之后,效率会明显增强。(但是单核CPU,Stream并行处理可能会效率更慢)
:::



