2017-03-28 9 views
1

私はオブジェクトListのリストを持っています。それらの 'Place'オブジェクトのインスタンスごとに、いくつかのメンバーとリストが含まれています。 子リストの値の存在に基づいて親リストをフィルタリングできるようにします。子リスト内のアイテムの値によるリストのフィルタリング

これらのオブジェクトのリストは、ジャクソンを使用してプレーンな古いJavaオブジェクトに変換されるJSONです。以下の例のデータを使用して

は(それは私の実際のコードで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

優れた、ありがとうございましたそれはうまくいった! –

関連する問題