Java中Stream?Filter多條件篩選過濾代碼舉例
Java Stream流中Filter用于通過設(shè)置的條件過濾出元素 ,示例如下:
List strings = Arrays.asList(“abc”, “”, “bc”, “efg”, “abcd”,"", “jkl”); List filtered = strings.stream().filter(string -> !string.isEmpty()).collect(Collectors.toList());
如果需要進(jìn)行多條件過濾
我們可以對(duì)這些參數(shù)進(jìn)行處理,我們只是需要做一下判斷,即:
讓所有參數(shù)默認(rèn)為 false,然后對(duì)傳進(jìn)來的值進(jìn)行取值判斷,若滿足該條件為true,多個(gè)條件進(jìn)行多次判斷
判斷完成之后 會(huì)拿到所有的boolean值 通過 && 拼接返回,即 有一個(gè)為false,即返回值為false
通過該方法會(huì)對(duì)一個(gè)對(duì)象進(jìn)行多條件過濾
public static List<BidListVo> checkOperationv1(List<BidListVo> list, BidProgressEnum progressEnum){
Integer progress = Integer.valueOf(progressEnum.getCode());
String nodeId = progressEnum.getNode();
List<BidListVo> collect = list.stream().filter(bidListVo -> filterProgress(bidListVo,progress) )
.collect(Collectors.toList());
return collect;
}
private static boolean filterProgress(BidListVo bidListVo, Integer progress) {
//副流程未開始 只判斷主流程
if(StringUtils.isEmpty(bidListVo.getReviewProgress())){
return Integer.valueOf(bidListVo.getProgress()) >= progress ? true: false;
}else if(Integer.valueOf(bidListVo.getProgress()) >= progress ||
Integer.valueOf(bidListVo.getReviewProgress()) >= progress){
// 主流程 獨(dú)立流程 任意一個(gè)大于當(dāng)前篩選進(jìn)度就好
return true;
}
return false;
}
示例
public class MultiFilterTest {
public static void main(String[] args) {
List<User> userList = getUserList();
// 篩選 age > 18 && address = "上海" 的user
List<User> filterList = userList.stream().filter(user -> filterAgeAndAddress(user,18,"上海")).collect(Collectors.toList());
filterList.forEach(System.out::println);
}
// 篩選 age > 18 && address = "上海" 的user
private static boolean filterAgeAndAddress(User user,Integer age,String address){
if(user.getAge() > 18 && address.equals(user.getAddress())){
return true;
}
return false;
}
private static List<User> getUserList() {
List<User> userList = new ArrayList<>();
userList.add(new User(1,"張三",18,"上海"));
userList.add(new User(2,"王五",16,"上海"));
userList.add(new User(3,"李四",20,"上海"));
userList.add(new User(4,"張雷",22,"北京"));
userList.add(new User(5,"張超",15,"深圳"));
userList.add(new User(6,"李雷",24,"北京"));
userList.add(new User(7,"王爺",21,"上海"));
userList.add(new User(8,"張三豐",18,"廣州"));
userList.add(new User(9,"趙六",16,"廣州"));
userList.add(new User(10,"趙無極",26,"深圳"));
return userList;
}
}輸出如下:

附:stream().filter自定義匹配過濾
到此這篇關(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()的實(shí)例代碼
- 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)文章
Springboot RocketMq實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Springboot RocketMq實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
SpringBoot項(xiàng)目中處理返回json的null值(springboot項(xiàng)目為例)
本文以spring boot項(xiàng)目為例給大家介紹SpringBoot項(xiàng)目中處理返回json的null值問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下2019-10-10
Java實(shí)現(xiàn)超大Excel文件解析(XSSF,SXSSF,easyExcel)
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)超大Excel文件解析(XSSF,SXSSF,easyExcel)以及速度的對(duì)比,感興趣的可以了解一下2022-07-07
一個(gè)MIDP俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)
一個(gè)MIDP俄羅斯方塊游戲的設(shè)計(jì)和實(shí)現(xiàn)...2006-12-12
Java使用Hutool+自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏
我們在使用手機(jī)銀行的時(shí)候經(jīng)常能看到APP上會(huì)將銀行卡的卡號(hào)中間部分給隱藏掉使用 ***** 來代替,在某些網(wǎng)站上查看一些業(yè)務(wù)密碼時(shí)(例如簽到密碼等)也會(huì)使用 ***** 來隱藏掉真正的密碼,那么這種方式是如何實(shí)現(xiàn)的呢,本文將給大家介紹使用Hutool+自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏2023-09-09

