中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解java8中的Stream數據流

發布時間:2020-08-21 23:00:35 來源:腳本之家 閱讀:192 作者:貝克田莊 欄目:編程語言

Stream是java8引入的一個重度使用lambda表達式的API。Stream使用一種類似用SQL語句從數據庫查詢數據的直觀方式來提供一種對Java集合運算和表達的高階抽象。直觀意味著開發者在寫代碼時只需關注他們想要的結果是什么而無需關注實現結果的具體方式。這一章節中,我們將介紹為什么我們需要一種新的數據處理API、Collection和Stream的不同之處以及如何將StreamAPI應用到我們的編碼中。

篩選重復的元素

Stream 接口支持 distinct 的方法, 它會返回一個元素(根據流所生成元素的 hashCode和equals方法實現)的流。

例如,以下代碼會篩選出列表中所有的偶數,并確保沒有 重復。

List<Dish> dishes = Dish.menu.stream()
.filter(Dish::isVegetarian)
.collect(Collectors.toList());

跳過指定數量的元素

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 方法,它會接受一個函數作為參數。這個函數會被應用到每個元素上,并將其映 射成一個新的元素

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);

總結

以上所述是小編給大家介紹的java8中的Stream數據流,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达日县| 张家口市| 绥江县| 文山县| 观塘区| 井研县| 威远县| 万年县| 汽车| 四平市| 阿坝| 梅河口市| 突泉县| 武定县| 吴旗县| 灵武市| 清涧县| 镶黄旗| 新民市| 黄山市| 恩施市| 子洲县| 云龙县| 凯里市| 吉首市| 化州市| 鹤壁市| 郎溪县| 邳州市| 天气| 武山县| 绥江县| 建瓯市| 嵊泗县| 麦盖提县| 鲁甸县| 龙岩市| 辽阳市| 会宁县| 江北区| 甘德县|