簡體   English   中英

查找列表中包含特定字段的所有對象

[英]Find all objects in list that contain a certain field

我試圖在包含特定字段名稱的對象列表中查找所有對象。 例如

"list": [
  {
    "namesArray": [],
    "name": "Bob",
    "id": "12345",
  },
  {
    "namesArray": [
      "Jenny"
    ],
    "name": "Ned",
  },
  {
    "namesArray": [],
    "name": "Jane",
    "id": "gkggglg",
  }
 ]

class 看起來像這樣:

class ListItem {
    String id;
    String name;
    List<String> namesArray; 
}

所以基本上我需要找到包含字段“id”的所有對象。 就像是:

list.stream().filter(li -> li.equals("id")).collect(Collectors.toList());

我試過關注此頁面,但這不是我想要的。 我不關心 id 的值,只關心 object 是否有該字段。

從評論中,我們得到您的實際要求:

因此所有具有非空 id 字段的對象。

使用流和過濾器調整您已經獲得的代碼很容易——您只需要更改傳遞給filter方法的謂詞。 該謂詞需要為您希望在結果中出現的任何值返回true ,並為您想要丟棄的任何值返回false 所以你只需要:

var result = list
    .stream()
    .filter(item -> item.id != null)
    .collect(Collectors.toList());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM