Java【從無到有從有到無】【參考】【效率】集合遍歷

 

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循環是你不二的選擇
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章