Java 8 Lambda - 过滤两个 ArrayList

Res*_*eff 1 java lambda list filter java-8

我有两个清单。第一个是区域的 ID 列表,第二个是具有嵌套区域对象的节点列表。

我的结构nodeList

....{
 "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
 }} ......
Run Code Online (Sandbox Code Playgroud)

和地区列表:

{
  "regions": ["56", "44"]
}
Run Code Online (Sandbox Code Playgroud)

我必须过滤我nodeList的区域 ID。我用旧的方式来做,但我想用 lambda 表达式来做。我该怎么做?

我用谷歌搜索,尝试过,但它不起作用:/

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

先感谢您。

Jef*_*ung 5

假设regionIDList是一个List,使用contains代替equals

result = nodeList.stream()
                 .filter(n -> regionIDList.contains(n.getRegion().getId().toString()))
                 .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)