精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

你還在遍歷搜索集合?別逗了!Java 8 一行代碼搞定,是真的優雅!

開發 后端
如果你想搜索 List 集合,在 Java 8 之前可以使用自身的 contains/ indexOf 方法來查找元素,但僅限是完整元素,而不能模糊搜索或者自定義搜索,這時候確實只能遍歷。

[[435252]]

背景

是的,如果你想搜索 List 集合,在 Java 8 之前可以使用自身的 contains/ indexOf 方法來查找元素,但僅限是完整元素,而不能模糊搜索或者自定義搜索,這時候確實只能遍歷。

但現在都 2021 年了,你還在使用傳統的遍歷集合的方式搜索 List 集合元素嗎?

那你就太 out 了,使用 Java 8 中的 Stream 搜索元素,一行代碼即可搞定,而且還真的很優雅!這篇不會介紹 Stream 基礎,Stream 系列我之前寫過一個專題了,不懂的關注公眾號Java技術棧,然后在公眾號 Java 教程菜單中閱讀。

Stream 搜索

在 Java 8 中,可以將  List 集合轉換成 Stream,Stream 提供了一系列強大的搜索功能,比如:filter、find*、*Match 等方法,一行代碼就能搞定搜索。

比如現在有初始數據: 

  1. public static List<User> list = new ArrayList<>();  
  2. /**  
  3.  * @author: 棧長  
  4.  * @from: 公眾號Java技術棧  
  5.  */  
  6. @BeforeEach  
  7. public void initList() {  
  8.     list.add(new User("公眾號Java技術棧-Petty", 22, 1));  
  9.     list.add(new User("公眾號Java技術棧-Tom", 38, 1));  
  10.     list.add(new User("公眾號Java技術棧-Jessica", 43, 0));  
  11.     list.add(new User("公眾號Java技術棧-John", 15, 1));  
  12.     list.add(new User("公眾號Java技術棧-Lily", 25, 0)); 
  13.     list.add(new User("公眾號Java技術棧-Lambs", 28, 0));  
  14.     list.add(new User("公眾號Java技術棧-Jack", 45, 1));  
  15.     list.add(new User("公眾號Java技術棧-Addy", 9, 0));  
  16.     list.add(new User("公眾號Java技術棧-Bob", 61, 1));  
  17.     list.add(new User("公眾號Java技術棧-Candy", 26, 0));  

用戶信息分別為:姓名、年齡、性別。

filter(過濾)

使用 filter 方法實現自定義搜索,比如搜索 List<User> 集合中 所有姓名含有 c 的人: 

  1. /**  
  2.  * 集合過濾  
  3.  * @author: 棧長  
  4.  * @from: 公眾號Java技術棧  
  5.  */  
  6. @Test  
  7. public void filter() {  
  8.     System.out.println("搜索所有姓名含有 c 的人");  
  9.     list.stream().filter(u -> u.getName().contains("c")).forEach(System.out::println);  

輸出結果:

findFirst(查找第一個)

查找 Stream 中的第一個元素,比如搜索 List<User> 集合中 第一個年經大于 30 的人: 

  1. /**  
  2.  * 集合搜索第一個  
  3.  * @author: 棧長  
  4.  * @from: 公眾號Java技術棧  
  5.  */  
  6. @Test  
  7. public void findFirst() {  
  8.     System.out.println("搜索第一個年經大于 30 的人");  
  9.     User user = list.stream().filter(u -> u.getAge() > 30).findFirst().get();  
  10.     System.out.println(user);  

輸出結果:

示例是需要先 filter 再 findFirst ,但如果不要條件的話,filter 就不是必須的。

findAny(查找任意一個)

查找 Stream 中的任意一個元素,比如搜索 List<User> 集合中 任意一個年經大于 30 的人: 

  1. /**  
  2.  * 集合搜索任意一個  
  3.  * @author: 棧長  
  4.  * @from: 公眾號Java技術棧  
  5.  */  
  6. @Test  
  7. public void findAny() {  
  8.     System.out.println("搜索任意一個年經大于 30 的人");  
  9.     User user = list.stream().filter(u -> u.getAge() > 30).findAny().get();  
  10.     System.out.println(user.getName());  

輸出結果:

為什么結果和 findFirst 一樣?和 findFirst 有什么區別呢?

findAny 是查找任意一個元素,在串行流中如果數據較少,一般會返回第一個元素,但在并行流中它返回的結果就不確定了,它可能是流中的任何元素。

findAny 的目的是為了提高并行流操作的性能,但如果需要一個固定的結果,建議使用 findFirst。

anyMatch(任意匹配)

查找 Stream 中的元素是否存在任意匹配,比如搜索 List<User> 集合中 是否存在 XX 人: 

  1. /**  
  2.  * 集合匹配任意元素  
  3.  * @author: 棧長  
  4.  * @from: 公眾號Java技術棧  
  5.  */  
  6. @Test  
  7. public void anyMatch() {  
  8.     System.out.println("是否存在 Jack:" + list.stream().anyMatch(u -> u.getName().contains("Jack")));  
  9.     System.out.println("是否存在 Jet:" + list.stream().anyMatch(u -> u.getName().contains("Jet")));  

輸出結果:

*Match 返回的結果是 boolean 類型。

noneMatch(空匹配)

查找 Stream 中的元素是否不存在匹配,比如搜索 List<User> 集合中 是否不存在 XX 人: 

  1. /**  
  2.  * 集合不匹配任意元素  
  3.  * @author: 棧長  
  4.  * @from: 公眾號Java技術棧  
  5.  */  
  6. @Test  
  7. public void noneMatch() {  
  8.     System.out.println("是否不存在 Jack:" + list.stream().noneMatch(u -> u.getName().contains("Jack")));  
  9.     System.out.println("是否不存在 Jet:" + list.stream().noneMatch(u -> u.getName().contains("Jack")));  

輸出結果:

這個方法的作用就和 anyMatch 相反。

allMatch(全匹配)

查找 Stream 中的元素是否全部匹配,比如搜索 List<User> 集合中 所有人的年紀是否都大于 XX: 

  1. /**  
  2.  * 集合匹配全部元素  
  3.  * @author: 棧長  
  4.  * @from: 公眾號Java技術棧  
  5.  */  
  6. @Test  
  7. public void allMatch() {  
  8.     System.out.println("所有人的年紀都大于3:" + list.stream().allMatch(u -> u.getAge() > 2));  
  9.     System.out.println("所有人的年紀都大于30:" + list.stream().allMatch(u -> u.getAge() > 30));  

輸出結果:

總結

以上所有搜索操作一行代碼就能搞定,是不是很簡單優雅?

對于 List 之外的集合都可以轉換為 List,再轉換為 Stream 再進行搜索操作,對于 Stream,搜索簡直就是小兒科,你學廢用了嗎?

趕緊發給身邊的同事看看吧,讓你們的代碼更優雅!

本文所有完整示例源代碼已經上傳:

https://github.com/javastacks/javastack 

 

責任編輯:龐桂玉 來源: Java編程
相關推薦

2021-02-24 14:30:59

JavaScript語言開發

2025-02-12 09:55:01

Java代碼性能

2025-08-01 00:00:00

2024-05-31 14:04:18

2022-08-19 08:39:34

OrderMySql數據庫

2025-06-10 07:15:18

Java 8重構設計模式

2014-12-26 09:52:52

2025-04-24 08:30:00

函數代碼格式化

2023-11-10 09:41:44

Python代碼

2022-02-24 10:40:14

Python代碼

2024-09-18 06:10:00

條件表達式判斷代碼Python

2025-04-09 11:20:00

LINQ代碼數據處理

2019-10-10 09:35:01

分庫分表JDK

2022-01-20 07:31:49

架構

2016-12-02 08:53:18

Python一行代碼

2025-05-09 08:00:00

JavaScript代碼防抖節流

2021-05-28 07:39:17

SQL代碼操作

2021-10-29 10:38:20

代碼 PILPython

2022-02-23 14:37:48

代碼Pythonbug

2024-01-23 08:00:00

區間評分法電影評分算法
點贊
收藏

51CTO技術棧公眾號

高清在线不卡av| 狠狠一区二区三区| **欧美大码日韩| 97se亚洲综合| 黄色一级片免费看| 国产一区毛片| 日韩亚洲电影在线| 久久婷婷国产精品| 黄在线免费观看| 成人av资源在线| 国产精品自拍小视频| 欧美人与禽zozzo禽性配| 蜜桃一区二区三区| 欧美精品亚洲二区| 久久久久久久中文| 巨大荫蒂视频欧美另类大| 成人av在线播放网址| 国产精品久久久久一区二区| 久久久无码精品亚洲国产| 色姑娘综合天天| 精品欧美在线观看| 久久亚洲欧美| 韩国国内大量揄拍精品视频| 调教驯服丰满美艳麻麻在线视频| 成人线上播放| 制服丝袜中文字幕一区| 国产91对白刺激露脸在线观看| 成人影院在线看| 国产三级一区二区| 精品亚洲一区二区三区四区五区高| 国产永久免费视频| 久久一本综合频道| 午夜免费日韩视频| 538任你躁在线精品视频网站| 国产成人手机高清在线观看网站| 精品久久久久久亚洲综合网 | 国产 xxxx| 日本国产亚洲| 91九色02白丝porn| 日韩中文字幕三区| 国产后进白嫩翘臀在线观看视频| ...xxx性欧美| 在线播放 亚洲| 国产黄色片在线观看| 久久久午夜电影| 精品不卡在线| 少妇高潮一区二区三区69| 国产麻豆精品一区二区| 国产精品欧美日韩久久| 日本黄色一级视频| 蜜桃视频一区| 日韩av电影院| 波多野结衣高清在线| 亚洲影音一区| 欧美在线观看网站| 亚洲GV成人无码久久精品| 国产精品日韩欧美一区| 高清亚洲成在人网站天堂| 九九视频在线免费观看| 国产综合自拍| 国模精品系列视频| 国产视频91在线| 校园激情久久| 国产成+人+综合+亚洲欧美丁香花| 日韩欧美成人一区二区三区| 亚洲激情av| 欧美性大战久久| 欧美日韩成人黄色| 一区二区三区影视| 欧美99久久| 亚洲人成7777| 日韩精品中文字幕有码专区| 欧美成人手机在线视频| 韩国一区二区三区视频| 欧美xxxx老人做受| 男人女人拔萝卜视频| 欧美经典影片视频网站| 亚洲第一中文字幕| av男人的天堂av| 色135综合网| 久久成人精品电影| 国产性生活网站| 国产日韩亚洲欧美精品| 国产成人在线播放| 国产老女人乱淫免费| 懂色av一区二区三区免费观看 | 国产视频aaa| 成人激情小说网站| 日本一区免费在线观看| 国产激情在线视频| 精品成人av一区| 中文字幕22页| 久久精品论坛| 中文字幕亚洲一区| 久久久久免费看| 日本欧美久久久久免费播放网| 2022国产精品| 理论视频在线| 一区二区激情视频| 亚洲色图久久久| 2023国产精华国产精品| 一区二区三区黄色| 久久一区二区三| 蜜桃视频一区二区| 精品在线视频一区二区| 日本中文字幕在线2020| 欧美日韩在线视频首页| www.色欧美| 中文字幕精品影院| 久久久久日韩精品久久久男男| 波多野结衣人妻| 成人免费视频网站在线观看| 中文字幕欧美日韩一区二区三区 | 午夜久久电影网| 九九热免费精品视频| 国产+成+人+亚洲欧洲在线 | 密臀av在线播放| 欧美男人的天堂一二区| www.自拍偷拍| 国产精品国码视频| 91精品啪在线观看麻豆免费| 久草视频视频在线播放| 午夜视频在线观看一区| 午夜激情影院在线观看| 成人影视亚洲图片在线| 欧美做受高潮1| 好吊视频一二三区| 亚洲精品高清在线| 午夜xxxxx| 成人中文视频| 国产精品99久久99久久久二8| 三级视频在线看| 亚洲最新在线观看| 日韩精品视频网址| 久久免费av| 国产精品成人久久久久| 国产亚洲依依| 日韩欧美亚洲综合| 国产三级国产精品| 亚洲精品欧洲| 国内精品视频免费| 欧美24videosex性欧美| 欧美一区二区三区思思人| 中文字幕观看av| 激情综合亚洲精品| 在线观看免费91| 日韩成人精品一区二区三区| 中文字幕无线精品亚洲乱码一区| 成年人晚上看的视频| 久久久精品一品道一区| 粉嫩虎白女毛片人体| 神马电影久久| 国产精品久久久久久久久久免费| 国产在线视频网| 欧美图片一区二区三区| 精品一区二区6| 久久精品国产亚洲高清剧情介绍| 亚洲7777| 国产一区 二区| 久久久久久国产精品| 日本波多野结衣在线| 欧美日韩国产色视频| 美女爆乳18禁www久久久久久| 久久午夜影视| 亚洲精品一卡二卡三卡四卡| 亚洲精品第一| 欧美国产日韩中文字幕在线| 日本精品久久久久久| 欧美香蕉大胸在线视频观看 | 国产xxxx在线观看| 亚洲一区二区三区四区在线观看| 午夜免费福利影院| 免费精品视频| 熟妇熟女乱妇乱女网站| 超碰cao国产精品一区二区| 欧美一区二区三区免费观看| 可以在线观看的av| 正在播放亚洲一区| 亚洲精品视频在线观看免费视频| 国产欧美一区二区在线观看| 17c国产在线| 亚洲精品婷婷| 先锋影音日韩| 亚洲三级av| 青草青草久热精品视频在线网站| 日本www在线| 亚洲黄色在线看| 中文字幕精品在线观看| 亚洲电影第三页| 国产1区2区在线观看| 国产精品一区二区x88av| 女性女同性aⅴ免费观女性恋| 欧美天天综合| 国产精品二区二区三区| 性欧美freehd18| 九色成人免费视频| 北岛玲一区二区三区| 欧美成人精品二区三区99精品| 亚洲国产成人无码av在线| 亚洲视频你懂的| mm131美女视频| 国产精品一区二区在线观看网站| 无码人妻丰满熟妇区毛片18| 91精品高清| 欧美亚洲一级二级| 成人看片爽爽爽| 国产日韩欧美日韩| 毛片无码国产| 久久免费在线观看| 黄色视屏免费在线观看| 亚洲女人被黑人巨大进入al| 午夜精品在线播放| 欧美日韩激情一区二区| 久草手机在线观看| 一区2区3区在线看| 男女男精品视频网站| 久久精品在线免费观看| 欧美xxxxx精品| 国产成人在线影院| www.五月天色| 麻豆久久一区二区| 亚洲性生活网站| 国产精品三上| 婷婷五月综合缴情在线视频| 国产精品mv在线观看| 国产成人三级视频| 日本欧美国产| 四虎影院一区二区三区| 女人丝袜激情亚洲| 精品一区久久久| 精品深夜福利视频| 高清一区二区三区视频| 日本在线视频一区二区三区| 成人疯狂猛交xxx| 青草综合视频| 国产日韩在线视频| 色噜噜成人av在线| 国产欧亚日韩视频| 久久久久伊人| 成人激情视频在线播放| 日韩毛片免费看| 国产一区视频在线| 少妇高潮一区二区三区99| 国产日本欧美一区二区三区在线| 欧美一级二级视频| 国产欧美久久久久久| 欧美videos粗暴| 成人福利在线视频| 电影一区中文字幕| 91久久偷偷做嫩草影院| 欧美区一区二区| 高清国产在线一区| 久久动漫网址| 欧美精品亚洲| 日韩激情一区| 最新中文字幕久久| 国产在线不卡| 激情五月宗合网| 久热国产精品| 91精品999| 风间由美性色一区二区三区| 毛片精品免费在线观看| a天堂中文在线观看| 欧美一区二区三区成人| av官网在线观看| 精品动漫一区二区三区在线观看| 欧美一区二区三区激情| 亚洲欧美制服丝袜| av影片免费在线观看| 久久亚洲电影天堂| 国产丝袜在线观看视频| 日本精品一区二区三区在线播放视频 | www深夜成人a√在线| 一区二区三区波多野结衣在线观看 | 亚洲午夜久久久| 性无码专区无码| 欧美日韩二区三区| 成人乱码一区二区三区| 亚洲欧美国产另类| 黄色网址在线免费播放| 国内精品久久久久影院优| 日韩欧美精品电影| 91夜夜揉人人捏人人添红杏| 久久九九热re6这里有精品| 性欧美.com| 欧美黄页免费| 免费看精品久久片| 538在线一区二区精品国产| 明星裸体视频一区二区| 欧美视频二区欧美影视| 狠狠干一区二区| 久久中文字幕av一区二区不卡| 成年在线观看视频| 欧美专区一区二区三区| www激情五月| 久久夜色精品国产噜噜av| 国产精品成人观看视频免费| 日韩成人综合网| 久久久久欧美| 亚洲欧美在线专区| 免费在线激情视频| 国产一区二区三区日韩| 蜜桃av免费看| 香蕉久久一区二区不卡无毒影院| 久久久久久无码精品大片| 精品国产a毛片| 日本a级在线| 国产精品69av| 久久香蕉精品香蕉| 中文字幕久久一区| 日韩电影一二三区| 给我免费观看片在线电影的| 亚洲视频一区在线| 中日韩在线观看视频| 日韩精品视频观看| 性国产高清在线观看| 国产精品一区二区三区成人| 亚洲免费福利一区| 日本xxxxxxxxxx75| 国产麻豆成人精品| 日本成人免费在线观看| 91久久精品午夜一区二区| 神马午夜在线观看| 欧美另类精品xxxx孕妇| 四虎在线精品| 亚洲国产日韩综合一区| 久久久噜噜噜久久狠狠50岁| 日本少妇xxxx| 亚洲一级二级在线| www.成人精品| 两个人的视频www国产精品| 国产精品成人国产| 亚洲欧美电影在线观看| 石原莉奈一区二区三区在线观看| 网站免费在线观看| 欧美日韩国产激情| 天天摸天天干天天操| 欧美极品少妇与黑人| 一区二区三区亚洲变态调教大结局| 伊人av成人| 久久99精品网久久| 亚洲一二三四五六区| 欧美色男人天堂| 大地资源中文在线观看免费版 | h片精品在线观看| 成人动漫在线观看视频| 欧美日韩国产在线一区| 农村末发育av片一区二区| 夜夜精品浪潮av一区二区三区| 国产欧美久久久| 精品少妇v888av| 视频一区中文字幕精品| 久操手机在线视频| 国产91丝袜在线18| 日本熟妇成熟毛茸茸| 日韩精品久久久久久福利| 美女精品导航| 国产亚洲福利社区| 久久国产99| 亚洲av毛片基地| 欧美日韩国产a| av网站网址在线观看| 91偷拍精品一区二区三区| 亚洲小说区图片区| 免费a在线观看播放| 在线免费观看日本一区| 麻豆传媒视频在线观看免费| 亚洲综合成人婷婷小说| 夜夜嗨av一区二区三区网站四季av| 熟女人妻在线视频| 欧美性三三影院| 超碰在线免费公开| 精品国产乱码久久久久软件 | 亚洲综合第一页| 亚洲精品日韩久久| 成熟人妻av无码专区| 91精品在线观看入口| 欧美xxxx免费虐| 欧美日韩精品久久| 国产在线不卡一区| 91精品国产乱码在线观看| 亚洲一品av免费观看| 欧美一区在线观看视频| 北条麻妃69av| 中文字幕日韩精品一区| 欧美一区二区黄片| 国产精品久久999| 欧美日韩免费观看一区=区三区| 欧美bbbbb性bbbbb视频| 欧美日韩成人一区| 55av亚洲| 精品久久免费观看| 99精品视频一区二区| 国产又大又粗又硬| 55夜色66夜色国产精品视频 | 精品中文字幕在线| 国产成人精品一区二区免费看京 | 国产精品国产三级国产三级人妇 | 午夜精品在线免费观看| 亚洲一卡二卡三卡四卡 |