2017-03-28 158 views
1

我有一個列表對象List,對於這些'Place'對象的每個實例,其中包含許多成員和列表。 我希望能夠根據子列表中存在的值來過濾父列表。通過子列表中項目的值過濾列表

這些對象列表是使用Jackson將JSON轉換爲普通的舊Java對象。

使用下面的示例數據(已轉換成我的實際代碼的Java對象,但是這裏顯示的JSON的可讀性)我要過濾掉所有地方不具備產品「C」。

{ 
    "places": [ 
    { 
     "Name": "ANAME", 
     "location": "A", 
     "type": "R", 
     "date": "2017-03-27", 
     "availableProducts": [ 
     { 
      "product": "A", 
      "price": 15.00 
     }, 
     { 
      "product": "B", 
      "price": 15.00 
     }, 
     { 
      "product": "C", 
     }, 
     { 
      "product": "D", 
     } 
     ] 
    }, 
    { 
     "Name": "NNAME", 
     "location": "A", 
     "type": "R", 
     "date": "2017-03-27", 
     "availableProducts": [ 
     { 
      "product": "E", 
      "price": 15.00 
     }, 
     { 
      "product": "F", 
      "price": 15.00 
     } 
     ] 
    } 
    ] 
} 

我遠獲得這樣的,這顯然是行不通的,因爲它只會看的第一款產品:

places.removeIf(p -> !p.getAvailableProducts().get(0).getProduct.equals("C")); 

回答

2

試試這個:

places.removeIf(p -> !p.getAvailableProducts().stream().anyMatch(x -> x.getProduct.equals("C"))); 
+0

非常好,謝謝工作! –