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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java stream 多个filter_恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑...

發布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java stream 多个filter_恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、基礎代碼準備

建立一個實體類,該實體類有五個屬性。下面的代碼使用了lombok的注解Data、AllArgsConstructor,這樣我們就不用寫get、set方法和全參構造函數了。lombok會幫助我們在編譯期生成這些模式化的代碼。

@Data@AllArgsConstructorpublic class Employee { private Integer id; private Integer age; //年齡 private String gender; //性別 private String firstName; private String lastName;}

寫一個測試類,這個測試類的內容也很簡單,新建十個Employee 對象

public class StreamFilterPredicate { public static void main(String[] args){ Employee e1 = new Employee(1,23,"M","Rick","Beethovan"); Employee e2 = new Employee(2,13,"F","Martina","Hengis"); Employee e3 = new Employee(3,43,"M","Ricky","Martin"); Employee e4 = new Employee(4,26,"M","Jon","Lowman"); Employee e5 = new Employee(5,19,"F","Cristine","Maria"); Employee e6 = new Employee(6,15,"M","David","Feezor"); Employee e7 = new Employee(7,68,"F","Melissa","Roy"); Employee e8 = new Employee(8,79,"M","Alex","Gussin"); Employee e9 = new Employee(9,15,"F","Neetu","Singh"); Employee e10 = new Employee(10,45,"M","Naveen","Jain"); List employees = Arrays.asList(e1, e2, e3, e4, e5, e6, e7, e8, e9, e10); List filtered = employees.stream() .filter(e -> e.getAge() > 70 && e.getGender().equals("M")) .collect(Collectors.toList()); System.out.println(filtered); }}

需要注意的是上面的filter傳入了lambda表達式(之前的章節我們已經講過了),表達過濾年齡大于70并且男性的Employee員工。輸出如下:

[Employee(id=8, age=79, gender=M, firstName=Alex, lastName=Gussin)]

二、什么是謂詞邏輯?

下面要說我們的重點了,通過之前的章節的講解,我們已經知道lambda表達式表達的是一個匿名接口函數的實現。那具體到Stream.filter()中,它表達的是什么呢?看下圖:可以看出它表達的是一個Predicate接口,在英語中這個單詞的意思是:謂詞。

什么是謂詞?(百度百科)

什么是謂詞邏輯?

WHERE 和 AND 限定了主語employee是什么,那么WHERE和AND語句所代表的邏輯就是謂詞邏輯

SELECT *FROM employeeWHERE age > 70AND gender = 'M'

三、謂詞邏輯的復用

通常情況下,filter函數中lambda表達式為一次性使用的謂詞邏輯。如果我們的謂詞邏輯需要被多處、多場景、多代碼中使用,通常將它抽取出來單獨定義到它所限定的主語實體中。 比如:將下面的謂詞邏輯定義在Employee實體class中。

public static Predicate ageGreaterThan70 = x -> x.getAge() >70; public static Predicate genderM = x -> x.getGender().equals("M");

3.1.and語法(并集)

List filtered = employees.stream() .filter(Employee.ageGreaterThan70.and(Employee.genderM)) .collect(Collectors.toList());

輸出如下:

[Employee(id=8, age=79, gender=M, firstName=Alex, lastName=Gussin)]

3.2.or語法(交集)

List filtered = employees.stream() .filter(Employee.ageGreaterThan70.or(Employee.genderM)) .collect(Collectors.toList());

輸出如下:實際上就是年齡大于70的和所有的男性(由于79的那位也是男性,所以就是所有的男性)

[Employee(id=1, age=23, gender=M, firstName=Rick, lastName=Beethovan), Employee(id=3, age=43, gender=M, firstName=Ricky, lastName=Martin), Employee(id=4, age=26, gender=M, firstName=Jon, lastName=Lowman), Employee(id=6, age=15, gender=M, firstName=David, lastName=Feezor), Employee(id=8, age=79, gender=M, firstName=Alex, lastName=Gussin), Employee(id=10, age=45, gender=M, firstName=Naveen, lastName=Jain)]

3.3.negate語法(取反)

List filtered = employees.stream() .filter(Employee.ageGreaterThan70.or(Employee.genderM).negate()) .collect(Collectors.toList());

輸出如下:把上一小節代碼的結果取反,實際上就是所有的女性

[Employee(id=2, age=13, gender=F, firstName=Martina, lastName=Hengis), Employee(id=5, age=19, gender=F,

面試資料可私聊,Java,資料,面試

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的java stream 多个filter_恕我直言你可能真的不会java第3篇:Stream的Filter与谓词逻辑...的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: av一区不卡| 免费国偷自产拍精品视频 | 国产午夜精品一区二区三区视频 | 爱情岛论坛永久入址在线 | 日韩视频免费观看高清完整版在线观看 | 日本免费www | 精品国产一区二区视频 | 九九热视频精品在线观看 | 精品无码人妻少妇久久久久久 | 国产中文字字幕乱码无限 | 免费日本在线 | 免费午夜激情 | 国产天天综合 | 男女免费网站 | 中文字幕在线观看视频网站 | 国产一区二区三区麻豆 | 黄瓜视频污在线观看 | 国产欧美日韩综合精品一区二区 | 日韩午夜激情视频 | 天堂av亚洲av国产av电影 | av国产精品| 日韩免费观看视频 | 久久久久亚洲av无码专区 | 四虎最新站名点击进入 | 国产成人免费网站 | 国产亚洲一区二区在线 | 自拍偷拍亚洲天堂 | 亚洲精品综合在线观看 | 免费看av软件| 亚洲视频一二三四 | aaaaaav| 亚洲精品粉嫩小泬20p | 久久频 | 3p在线播放 | 亚洲av综合一区 | 国产伦精品一区二区三区四区免费 | 欧美性xxxx图片 | 日韩脚交footjobhd | 中文字幕国产专区 | 国产绳艺sm调教室论坛 | 日韩美女免费视频 | 欧美高清性xxxxhdvideosex | 日本精品视频一区二区 | 国产成人免费观看视频 | n0659极腔濑亚美莉在线播放播放 | 日韩国产一区二区三区 | 免费的黄色网 | 免费久久视频 | 草草视频在线免费观看 | 亚洲黄色成人网 | 日韩在线观看中文字幕 | аⅴ资源新版在线天堂 | 国产精品一区二区三区久久 | 日本精品在线观看 | 伊人自拍 | av中文字幕一区二区 | 精品久久无码视频 | 国产丝袜一区二区三区 | 欧美成人一二三 | 有声小说 成人专区 | 美女尿尿网站 | 九九亚洲 | 黄色国产在线观看 | 小sao货水好多真紧h无码视频 | 新天堂av| 帮我拍拍漫画全集免费观看 | 嫩草伊人久久精品少妇av | 69日本xxxxxxxx96 | 久久成人精品视频 | 亚洲v欧美v另类v综合v日韩v | 天天综合网久久综合网 | 少妇饥渴放荡91麻豆 | 成年人的视频网站 | 日韩一级不卡 | 中文无码精品一区二区三区 | 涩涩视频软件 | 国产香蕉视频 | 91久久人人 | 美女又黄又免费的视频 | 中文天堂在线播放 | 成人精品视频99在线观看免费 | 亚洲天堂黄色 | 老司机深夜福利影院 | 欧美精品第一页 | 日韩毛片一区 | 在线看的免费网站 | 国内外成人激情视频 | 免费麻豆视频 | 午夜免费片 | 日本人妻伦在线中文字幕 | 日本www在线 | 日韩精品一二三四区 | 精品一区二区三区无码视频 | 欧美日韩黑人 | 午夜电影在线播放 | 亚洲第一天堂av | 亚洲色图校园春色 | 黄色小说图片视频 | 天天想你免费观看完整版高清电影 |