簡體   English   中英

使用給定參數過濾Java流

[英]Filtering Java stream using a given parameter

我有一個List<MyObject>

My Object:
    String name;
    String team;

編輯:我想創建一個函數,將使用兩個參數過濾此列表:

public List<MyObject> filterMyObjectList (String name, String state, List<MyObject> objectsList)

我需要創建兩個過濾器:

第一個將按名稱過濾MyObject,並將僅將MyObject.getName().equals(name)所在的對象添加到返回列表中。

第二個將使用我擁有的另一個函數( getState(MyObject.getTeam()) )由團隊過濾MyObject,並將僅將其中getState(MyObject.getTeam()).equals(state)對象添加到列表中。

有沒有辦法寫這樣的謂詞? 使用變量進行比較? 還有另一種使用比較進行過濾的方法嗎?

謝謝!

為此,您可以應用過濾器:

public List<MyObject> filterMyObjectList (String name, String state, List<MyObject> objectsList) {
   return objectsList.stream()
                     .filter(obj -> obj.getName().equals(name) && getState(obj.getTeam()).equals(state))
                     .collect(Collectors.toList());
}

由於您要檢查同一對象的兩個條件,因此可以在Predicate使用&&將它們聚合

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM