2017-11-25 10 views
2

サンプルJSONのJava 8のラムダリストリストフィルタ内部

[ 
    { 
    "id": "1", 
    "products": [ 
     { 
     "id": "333", 
     "status": "Active" 
     }, 
     { 
     "id": "222", 
     "status": "Inactive" 
     }, 
     { 
     "id": "111", 
     "status": "Active" 
     } 

    ] 
    }, 
    { 
    "id": "2", 
    "products": [ 
     { 
     "id": "6", 
     "status": "Active" 
     }, 
     { 
     "id": "7", 
     "status": "Inactive" 
     } 
    ] 
    } 
] 

私は少なくとも1つのアクティブな製品を持っているオブジェクトのリストをretieveしたいです。 以下のコードは製品のリストを返しますが、ProdcutResponseのリストが必要です。これを行う方法は?

答えて

1

コードがあまり表示されていないため、暗い場所で撮影されます。私の主な提案は、リストにそれを収集する前にStream<List<Product>>Stream<ProductResponse>をマッピングしないことであろう。

response.stream() 
     .filter(pr -> pr.getProducts().stream().anyMatch(s -> "Active".equals(s.getType()))) 
     .collect(Collectors.toList()); 

あなたはList<ProductResponse>は、アクティブ型でのみProduct Sを含むようにしたい場合は、allMatchanyMatchを変更することができます(何それは意味する)。