前言:Lambda使代碼簡潔,與stream搭配使用,能充分利用多核,實現(xiàn)真正的并行,如果數據量不大,只能起到簡化代碼的作用,性能方面并沒有太突出的優(yōu)勢,甚至會比for循環(huán)差,因為程序第一次使用lamda的時候需要初始化一些lambda框架的東西,這些也要花費時間,而for循環(huán)就不需要這些時間開銷,上來就能執(zhí)行。當迭代的數據量大的時候,lambda性能優(yōu)勢就體現(xiàn)出來了。
Java SE8.0添加了2個對集合數據進行批量操作的包:java.util.function包以及java.util.stream包。流(stream)就如同迭代器(iterator)??偟膩碚f,lambda表達式和stream是子java語言添加泛型(generica)和注解(annotation)以來最大的變化。
forEach(->)的使用
//forEach的使用
List<String> wordList=Lists.newArrayList();
wordList.add("a");
wordList.add("z");
wordList.add("c");
wordList.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
//字母升序
return o1.compareTo(o2);
}
});
wordList.forEach(word->System.out.println(word));//相當于for循壞
//用 Lambda 排序
wordList.sort((String o1,String o2)->{
return o1.compareTo(o2);
});
stream的使用:
stream能夠對集合對象進行各種串行或者并發(fā)聚集操作,依賴lambda表達式,只用當兩種結合時才能極大的提高編碼效率。