詳解java8中的Stream數(shù)據(jù)流
Stream是java8引入的一個重度使用lambda表達式的API。Stream使用一種類似用SQL語句從數(shù)據(jù)庫查詢數(shù)據(jù)的直觀方式來提供一種對Java集合運算和表達的高階抽象。直觀意味著開發(fā)者在寫代碼時只需關(guān)注他們想要的結(jié)果是什么而無需關(guān)注實現(xiàn)結(jié)果的具體方式。這一章節(jié)中,我們將介紹為什么我們需要一種新的數(shù)據(jù)處理API、Collection和Stream的不同之處以及如何將StreamAPI應(yīng)用到我們的編碼中。
篩選重復(fù)的元素
Stream 接口支持 distinct 的方法, 它會返回一個元素(根據(jù)流所生成元素的 hashCode和equals方法實現(xiàn))的流。
例如,以下代碼會篩選出列表中所有的偶數(shù),并確保沒有 重復(fù)。
List<Dish> dishes = Dish.menu.stream() .filter(Dish::isVegetarian) .collect(Collectors.toList());
跳過指定數(shù)量的元素
Stream 支持 skip(n) 方法,返回一個扔掉了前n個元素的流。如果流中元素不足n個,則返回一 個空流。limit(n) 和 skip(n) 是互補的
List<Dish> dishSkip = Dish.menu.stream().filter(d -> d.getCalories() > 300).skip(2) //去掉符合要求的集合中的前2個元素后返回 .collect(Collectors.toList()); dishSkip.forEach(System.out::println);
map 操作
Stream 支持 map 方法,它會接受一個函數(shù)作為參數(shù)。這個函數(shù)會被應(yīng)用到每個元素上,并將其映 射成一個新的元素
List<String> list = st.skip(0).limit(2).map(s->s.toUpperCase()).collect(Collectors.toList());
元素求和
List<Integer> numbers = Arrays.asList(3,4,5,1,2); int sum1 = numbers.stream().reduce(0,(a, b) -> a + b); System.out.println(sum1); int sum2 = numbers.stream().reduce(0,Integer::sum); System.out.println(sum2);
最大值
int max = numbers.stream().reduce(0,Integer::max); System.out.println(max);
最小值
//reduce不接受初始值,返回一個Optional對象(考慮流中沒有任何元素的情況) Optional<Integer> min = numbers.stream().reduce(Integer::min); min.ifPresent(System.out::println);
總結(jié)
以上所述是小編給大家介紹的java8中的Stream數(shù)據(jù)流,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Springboot+ElementUi實現(xiàn)評論、回復(fù)、點贊功能
這篇文章主要介紹了通過Springboot ElementUi實現(xiàn)評論、回復(fù)、點贊功能。如果是自己評論的還可以刪除,刪除的規(guī)則是如果該評論下還有回復(fù),也一并刪除。需要的可以參考一下2022-01-01java獲取網(wǎng)絡(luò)圖片上傳到OSS的方法
這篇文章主要為大家詳細介紹了java獲取網(wǎng)絡(luò)圖片上傳到OSS,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-10-10深入解析Java的Servlet過濾器的原理及其應(yīng)用
這篇文章主要介紹了深入解析Java的Servlet過濾器的原理及應(yīng)用,Java編寫的Servlet通常是一個與網(wǎng)頁一起作用于瀏覽器客戶端的程序,需要的朋友可以參考下2016-01-01SpringBoot2基于重復(fù)創(chuàng)建bean的問題及解決
這篇文章主要介紹了SpringBoot2基于重復(fù)創(chuàng)建bean的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06