一、通過Stream過濾某個字段某個值
Stream是Java 8中提供的新特性,可以讓我們以聲明性的方式對集合數據進行操作。
假設我們有一個類Person,包含姓名(name)和年齡(age)兩個字段。我們想要從一個List列表中過濾出年齡等於30歲的Person對象。
List persons = new ArrayList(); // 添加數據到persons列表 persons.add(new Person("Tom", 30)); persons.add(new Person("Jane", 25)); persons.add(new Person("Tim", 22)); List filterPersons = persons.stream() .filter(p -> p.getAge() == 30) .collect(Collectors.toList());
以上代碼中,我們使用filter方法對persons列表進行過濾,其參數p -> p.getAge() == 30表示只留下年齡等於30歲的Person對象。最終結果存放到filterPersons列表中。
二、通過Stream過濾某個字段在list中
在上一個例子中,我們只過濾了一個值。如果我們想要過濾一組值怎麼辦?
這時候,我們可以藉助List的contains()方法,使用Stream的filter()方法對persons列表進行過濾,保留age字段在ageList列表的Person對象。
List persons = new ArrayList(); // 添加數據到persons列表 persons.add(new Person("Tom", 30)); persons.add(new Person("Jane", 25)); persons.add(new Person("Tim", 22)); List ageList = Arrays.asList(25, 30); List filterPersons = persons.stream() .filter(p -> ageList.contains(p.getAge())) .collect(Collectors.toList());
上述代碼中,我們使用Arrays.asList()方法創建ageList列表,包含25和30兩個整數。filter()方法中的參數p -> ageList.contains(p.getAge())表示只保留age字段在ageList列表中的Person對象。最終結果存放到filterPersons列表中。
三、通過Stream流獲取一個字段
有時候,我們只需要從一個列表中取出某個字段的值,比如從persons列表中取出所有人的姓名。
為了解決這個問題,我們可以使用Stream中的map方法。
List persons = new ArrayList(); // 添加數據到persons列表 persons.add(new Person("Tom", 30)); persons.add(new Person("Jane", 25)); persons.add(new Person("Tim", 22)); List names = persons.stream() .map(Person::getName) .collect(Collectors.toList());
上述代碼中,我們使用map()方法提取Person對象中的姓名(name)字段。最終結果存放到names列表中。
四、根據某個字段過濾選取相關數據
有時候,我們想要根據某個字段過濾選取一些數據並進行相關操作。
假設我們有一個List列表,每個User對象包含id和name兩個字段。我們想要根據id字段過濾出id=1,2,3的User對象,並對根據name字段進行升序排序。
List users = new ArrayList(); // 添加數據到users列表 users.add(new User(2, "Tom")); users.add(new User(1, "Jane")); users.add(new User(3, "Tim")); users.add(new User(5, "Mike")); users.add(new User(4, "Mary")); List sortedUsers = users.stream() .filter(u -> u.getId() <= 3) .sorted(Comparator.comparing(User::getName)) .collect(Collectors.toList());
上述代碼中,我們使用filter()方法過濾出id小於等於3的User對象,然後使用sorted()方法根據name字段進行升序排序,最終結果存放到sortedUsers列表中。
以上就是Stream過濾某個字段的一些操作方法,使用Stream可以讓我們更加靈活高效地對集合進行操作,提高我們的編程效率。
原創文章,作者:UPGV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/133333.html