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