java中處理stream.filter()的實(shí)例代碼
前言
在Java中,stream.filter方法用于對(duì)流中的元素進(jìn)行篩選。filter方法接受一個(gè)Predicate(一個(gè)返回布爾值的函數(shù)),然后返回一個(gè)包含所有匹配元素的新流。
使用場(chǎng)景
假設(shè)有一個(gè)包含多個(gè)元素的集合,需要對(duì)其中的元素進(jìn)行篩選,只保留滿足特定條件的元素。
示例代碼
以下是一些使用stream.filter方法的示例:
1. 過濾列表中的偶數(shù)
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FilterExample {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // 輸出: [2, 4, 6, 8, 10]
}
}
2. 過濾包含特定字符串的字符串列表
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FilterExample {
public static void main(String[] args) {
List<String> words = Arrays.asList("apple", "banana", "cherry", "date", "fig", "grape");
List<String> filteredWords = words.stream()
.filter(word -> word.contains("a"))
.collect(Collectors.toList());
System.out.println(filteredWords); // 輸出: [apple, banana, grape]
}
}
3. 過濾對(duì)象列表
假設(shè)有一個(gè)Person類,并希望過濾出年齡大于18歲的人。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
public class FilterExample {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("John", 20),
new Person("Jane", 17),
new Person("Tom", 25),
new Person("Lucy", 15)
);
List<Person> adults = people.stream()
.filter(person -> person.getAge() > 18)
.collect(Collectors.toList());
adults.forEach(System.out::println);
// 輸出:
// Person{name='John', age=20}
// Person{name='Tom', age=25}
}
}
說明
stream():將集合轉(zhuǎn)換為流。filter(Predicate):過濾流中的元素,保留滿足條件的元素。collect(Collectors.toList()):將流轉(zhuǎn)換回列表。
使用Predicate接口
Predicate是一個(gè)函數(shù)式接口,定義了一個(gè)test方法,用于對(duì)給定的輸入進(jìn)行評(píng)估。
可以創(chuàng)建自定義的Predicate,如下所示:
import java.util.function.Predicate;
public class CustomPredicateExample {
public static void main(String[] args) {
Predicate<Integer> isEven = n -> n % 2 == 0;
Predicate<Integer> isPositive = n -> n > 0;
boolean result1 = isEven.test(4); // true
boolean result2 = isPositive.test(-1); // false
System.out.println(result1); // 輸出: true
System.out.println(result2); // 輸出: false
}
}
總結(jié)
stream.filter是Java Stream API中的一個(gè)強(qiáng)大工具,可以簡潔地對(duì)集合進(jìn)行篩選操作。通過結(jié)合使用Lambda表達(dá)式和Predicate接口,可以方便地創(chuàng)建各種篩選條件。
下一步建議:
a. 使用其他Stream操作(如map、reduce)與filter結(jié)合進(jìn)行復(fù)雜的數(shù)據(jù)處理。
b. 實(shí)現(xiàn)自定義Predicate來篩選更復(fù)雜的條件。
到此這篇關(guān)于java中處理stream.filter()的文章就介紹到這了,更多相關(guān)java處理stream.filter()內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java 8 Stream filter流式過濾器詳解
- Java?Stream流中的filter()使用方法舉例詳解
- Java中Stream?Filter多條件篩選過濾代碼舉例
- java基礎(chǔ)理論Stream的Filter與謂詞邏輯
- Java中的FilterOutputStream 簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- Java中的 FilterInputStream簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- Java中FilterInputStream和FilterOutputStream的用法詳解
- java streamfilter list 過濾的實(shí)現(xiàn)
相關(guān)文章
java selenium教程環(huán)境搭建基于Maven
本文主要介紹Java selenium 環(huán)境的安裝,這里介紹了基于Maven的環(huán)境搭建,有需要的小伙伴可以參考下2016-08-08
Java實(shí)現(xiàn)經(jīng)典游戲復(fù)雜迷宮
這篇文章主要介紹了如何利用java語言實(shí)現(xiàn)經(jīng)典《復(fù)雜迷宮》游戲,文中采用了swing技術(shù)進(jìn)行了界面化處理,感興趣的小伙伴可以動(dòng)手試一試2022-02-02
JAVA NIO按行讀寫大文件出現(xiàn)中文亂碼問題的解決
這篇文章主要為大家詳細(xì)介紹了JAVA在使用NIO進(jìn)行按行讀寫大文件時(shí)出現(xiàn)中文亂碼問題是如何解決的,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考一下2025-02-02
springboot接口返回?cái)?shù)據(jù)類型全面解析
這篇文章主要介紹了springboot接口返回?cái)?shù)據(jù)類型問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
Spring詳細(xì)講解事務(wù)失效的場(chǎng)景
實(shí)際項(xiàng)目開發(fā)中,如果涉及到多張表操作時(shí),為了保證業(yè)務(wù)數(shù)據(jù)的一致性,大家一般都會(huì)采用事務(wù)機(jī)制,好多小伙伴可能只是簡單了解一下,遇到事務(wù)失效的情況,便會(huì)無從下手,下面這篇文章主要給大家介紹了關(guān)于Spring事務(wù)失效場(chǎng)景的相關(guān)資料,需要的朋友可以參考下2022-07-07
使用RabbitMQ實(shí)現(xiàn)延時(shí)消息自動(dòng)取消的案例詳解
這篇文章主要介紹了使用RabbitMQ實(shí)現(xiàn)延時(shí)消息自動(dòng)取消的簡單案例,案例代碼包括導(dǎo)包的過程和相關(guān)配置文件,本文結(jié)合代碼給大家講解的非常詳細(xì),需要的朋友可以參考下2024-03-03

