Java8 forEach常用场景代码实例
forEachandMap
1.1通常这样遍历一个Map
Mapitems=newHashMap<>(); items.put("A",10); items.put("B",20); items.put("C",30); items.put("D",40); items.put("E",50); items.put("F",60); for(Map.Entry entry:items.entrySet()){ System.out.println("Item:"+entry.getKey()+"Count:"+entry.getValue()); }
1.2在java8中你可以使用foreach+拉姆达表达式遍历
Mapitems=newHashMap<>(); items.put("A",10); items.put("B",20); items.put("C",30); items.put("D",40); items.put("E",50); items.put("F",60); items.forEach((k,v)->System.out.println("Item:"+k+"Count:"+v)); items.forEach((k,v)->{ System.out.println("Item:"+k+"Count:"+v); if("E".equals(k)){ System.out.println("HelloE"); } });
forEachandList
2.1通常这样遍历一个List.
Listitems=newArrayList<>(); items.add("A"); items.add("B"); items.add("C"); items.add("D"); items.add("E"); for(Stringitem:items){ System.out.println(item); }
2.2在java8中你可以使用foreach+拉姆达表达式或者methodreference(方法引用)
Listitems=newArrayList<>(); items.add("A"); items.add("B"); items.add("C"); items.add("D"); items.add("E"); //lambda //Output:A,B,C,D,E items.forEach(item->System.out.println(item)); //Output:C items.forEach(item->{ if("C".equals(item)){ System.out.println(item); } }); //methodreference //Output:A,B,C,D,E items.forEach(System.out::println); //Streamandfilter //Output:B items.stream() .filter(s->s.contains("B")) .forEach(System.out::println);
关于效率问题,网上有大神进行测试后总结出:最快的是增强for循环
最终结论
普通(数量级10W以下,非并行)遍历一个集合(List、Set、Map)如果在意效率,不要使用java8的foreach,虽然它很方便很优雅
任何时候使用增强for循环是你不二的选择
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。