@Test
public void test(){
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < 100; i++) {
list.add(i);
}
long start1 = System.currentTimeMillis();
for (int i = 0; i < list.size(); i++) {
doSome();
}
long end1 = System.currentTimeMillis();
System.out.println("for:"+(end1 - start1));
start1 = System.currentTimeMillis();
for (Integer integer : list) {
doSome();
}
end1 = System.currentTimeMillis();
System.out.println("增强for:"+ (end1 - start1));
start1 = System.currentTimeMillis();
list.forEach(e -> doSome());
end1 = System.currentTimeMillis();
System.out.println("foreach:"+ (end1 - start1));
start1 = System.currentTimeMillis();
list.stream().forEach(e -> doSome());
end1 = System.currentTimeMillis();
System.out.println("stream-foreach:"+ (end1 - start1));
start1 = System.currentTimeMillis();
list.parallelStream().forEach(e -> doSome());
end1 = System.currentTimeMillis();
System.out.println("parallelStream-foreach:"+ (end1 - start1));
}
private void doSome(){
}
for:0
增强for:0
foreach:251
stream-foreach:4
parallelStream-foreach:8
循环体内操作不消耗时间时: 简单循环效率更高
private void doSome(){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for:10343
增强for:10189
foreach:10268
stream-foreach:10204
parallelStream-foreach:2647
循环体内部执行比较耗时时:流式循环更为省时(内部采用多线程)