我有一个对象列表List,对于那些' Place'的每个实例。那里的对象包含许多成员和列表。 我希望能够根据子列表中存在的值来过滤父列表。
这些对象列表是使用Jackson将JSON转换为普通的旧Java对象。
使用下面的示例数据(在我的实际代码中已转换为java对象,但为了便于阅读,此处以JSON显示)我想过滤掉所有没有产品的地方 ' C'
{
"places": [
{
"Name": "ANAME",
"location": "A",
"type": "R",
"date": "2017-03-27",
"availableProducts": [
{
"product": "A",
"price": 15.00
},
{
"product": "B",
"price": 15.00
},
{
"product": "C",
},
{
"product": "D",
}
]
},
{
"Name": "NNAME",
"location": "A",
"type": "R",
"date": "2017-03-27",
"availableProducts": [
{
"product": "E",
"price": 15.00
},
{
"product": "F",
"price": 15.00
}
]
}
]
}
我已经走到了这一步,显然它不会起作用,因为它只会看第一个产品:
places.removeIf(p -> !p.getAvailableProducts().get(0).getProduct.equals("C"));
答案 0 :(得分:2)
试试这个:
places.removeIf(p -> !p.getAvailableProducts().stream().anyMatch(x -> x.getProduct.equals("C")));