List方式
- 方式一
public static void test1(List<String> list) {
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
- 方式二
public static void test2(List<String> list) {
for (int i = 0,lengh=list.size(); i < lengh; i++) {
System.out.println(list.get(i));
}
}
- 方式三(Iterator遍歷)
public static void test3(List<String> list) {
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
- 方式四(增強for循環)
public static void test4(List<String> list) {
for(String str:list){
System.out.println(str);
}
}
- 方式五(java8)
public static void test5(List<String> list) {
//list.forEach(System.out::println);和下面的寫法等價
list.forEach(str->{
System.out.println(str);
});
}
- 方式六(java8)
public static void test6(List<String> list) {
list.iterator().forEachRemaining(str->{
System.out.println(str);
});
}
效率對比
結論
在正常使用(數據量少於百萬以下),正常(非並行)遍歷一個集合的時候:
- 不要使用java8的foreach,每次耗時高達100毫秒以上
- 提前計算出大小的普通for循環,耗時最小,但是書寫麻煩
- 增強for循環表現良好
Set
Map
結論
java8的foreach依然不負衆望,最快的是增強for循環。
- 普通(數量級10W以下,非並行)遍歷一個集合(List、Set、Map)如果在意效率,不要使用java8的foreach,雖然它很方便很優雅
- 任何時候使用增強for循環是你不二的選擇