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循环是你不二的选择