2017-06-10 7 views
1

私は2つのリストを持っています。最初のものは領域のIDリストであり、2つ目はネストされたリージョンオブジェクトを持つノードリストです。私nodeListJava 8 Lambda - filter 2 ArrayList

構造:

....{ 
"id": 6412, 
"name": "303000201", 
"description": "desc", 
"organization": { 
    "id": 41065, 
    "name": "adad", 
    "address": null 
}, 
"region": { 
    "id": 21, 
    "name": "Quba rayonu", 
    "code": "303" 
}, 
"nodeType": { 
    "id": "WELL", 
    "name": "Quyu", 
    "description": null 
}, 
"location": { 
    "id": 6412, 
    "latitude": 41.36735554, 
    "longitude": 48.5041245554 
}} ...... 

や地域のリストは:

{ 
    "regions": ["56", "44"] 
} 

私は私のnodeList地域のIDをフィルタする必要があります。私はそれを古い方法で行いますが、ラムダ式でそれをやりたいのです。どうしたらいいですか?

私は、Googleで検索しようとしたが、それは動作しません:/

result= nodeList.stream() 
       .filter(n -> regionIDList.equals(n.getRegion().getId().toString())) 
       .collect(Collectors.toList()); 

事前にありがとうございます。 regionIDListを想定し

答えて

3

contains代わりのequalsを使用し、Listである:あなたの答えのための

result = nodeList.stream() 
       .filter(n -> regionIDList.contains(n.getRegion().getId().toString())) 
       .collect(Collectors.toList()); 
+0

おおのおかげで、それが理由かもしれません。私はあなたにお返ししようとします。 –

+0

もう一度ありがとうございます;)それは動作します。しかし、まだ少し問題があります。結果は正しく返されますが、1500番目のオブジェクトの後に結果リストの中にヌルオブジェクトがたくさんあります:/それは左へ結合されますか))私は理解しません –

+0

Node(n)がnullでないかどうかチェックする必要があります –

関連する問題