[英]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.