【发布时间】:2018-02-22 23:32:50
【问题描述】:
我有一个方法:
有自定义对象列表,
获取变量参数
并且应该返回一个字符串列表,其中包含具有参数的对象的 id
CustomObject 看起来像:
{
"id": "1a",
"secondObjectList": [{
"name": "a",
"params": ["param1", "param2", "param3"]
},
{
"name": "b",
"params": ["param2"]
}]
}
当对象只有一个参数时使用流的方法:
public List<String> findObjectsIdsThatHaveParam(List<CustomObject> objectsList, String param) {
return objectsList.stream()
.filter(object -> object.getSecondObjectList.get(0).getParams().contains(param))
.map(CustomObject::getId)
.collect(Collectors.toList());
}
我不知道如何通过 params arrayList 进行迭代。你知道我如何使用流来做到这一点吗?
【问题讨论】:
-
使用
filter(o -> o.getParams().contains(param)) -
在这种情况下你是对的。我的错误,数组应该有一个带有 aray 的下一个对象。我会编辑它。
-
如果你想接受至少有一个参数包含(但不等于)给定字符串的对象,那么使用
filter(o -> o.getParams().stream().anyMatch(p -> p.contains(param)) -
请为
ObjectClass添加适当的Java 类以避免任何类型的错误答案/cmets。 -
现在使用双嵌套列表,使用
filter(o -> o.getSecondObjectList().stream().anyMatch(x -> x.getParams().contains(param)))
标签: java java-stream