日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

如何在Java 8中使用filter()方法

發布時間:2023/12/3 java 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在Java 8中使用filter()方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java 8 Stream接口引入了filter()方法,該方法可用于根據特定條件從對象集合中過濾掉某些元素。 應將此條件指定為filter()方法接受為參數的謂詞 。

java.util.function.Predicate接口定義了一個名為test()的抽象方法,該方法接受通用類型T的對象并返回一個布爾值。

讓我們進行一些編碼以更清楚地了解過濾器方法。 請看以下菜式。

public class Dish {private String name;private Boolean vegitarian;private Integer calaries;private Type type;public Dish(String name, Boolean vegitarian, Integer calaries, Type type) {super();this.name = name;this.vegitarian = vegitarian;this.calaries = calaries;this.type = type;}public Boolean getVegitarian() {return vegitarian;}public void setVegitarian(Boolean vegitarian) {this.vegitarian = vegitarian;}public Type getType() {return type;}public void setType(Type type) {this.type = type;}public enum Type { MEAT, FISH, OTHER }; }

考慮一下,我們只想從所有菜肴列表中過濾掉素食菜肴。 以下是Java 8之前的方法。

List<Dish> vegetarianDishes = new ArrayList<Dish>(); for(Dish d: menu) {if(d.getVegetarian()) { vegetarianDishes.add(d);} }

上面的方法稱為外部迭代,我們通過數據集合顯式管理迭代。

如何使用Java 8做到這一點? 只需如下一行即可。

List<Dish> menu = .... List<Dish> vegitarianDishes = menu.stream().filter(d -> d.getVegitarian()).collect(Collectors.toList());

我們已經以Lambda表達式的形式將Predicate實例傳遞給filter()方法。

另外,我們可以使用Java 8方法引用將謂詞實例傳遞給filter()方法,如下所示。

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

Dish::getVegitarian是Java 8方法引用的語法。 它指的是Dish類的getVegitarian()方法。

filter()方法返回菜肴流,而collect()方法將流轉換為列表。 “收集”操作稱為終端操作。

現在讓我們說,我們要獲取前三個包含300多個卡路里的菜肴。 流支持limit(n)方法,該方法返回另一個不超過給定大小的流。 請求的大小作為參數傳遞給limit。

List<Dish> menu = .... List<Dish> threeHighCalaricDish = menu.stream().filter(d -> d.getCalaries() > 300).limit(3).collect(Collectors.toList());

同樣,如果我們要跳過前3個元素,則流支持skip(n)方法以返回丟棄前n個元素的流。 如果流中的元素少于n個,則返回空流。 注意limit(n)和skip(n)是互補的!

現在,為您做運動! 您將如何使用流過濾前兩個肉類菜肴?

List<Dish> menu = .... List<Dish> meatDishes = menu.stream().filter(d -> d.getType() == Dish.Type.MEAT).limit(2).collect(Collectors.toList())

翻譯自: https://www.javacodegeeks.com/2018/07/filter-method-java-8.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的如何在Java 8中使用filter()方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。