- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个外循环和内循环。它们看起来像:
List<InnerObject> result = new ArrayList<>(innerObjects.size());
for (OuterObject outerObject : outerObjects) {
for (InnerObject innerObject : innerObjects) {
if (someBooleanMethod(innerObject, outerObject)) {
result.add(innerObject);
break;
}
}
}
正如您所看到的,对于每个外部对象,我循环遍历内部列表并检查项目,如果通过检查它们相等,我会将内部对象添加到结果列表中。
我想使用 Stream API 重写它,但遇到一个问题,无法将其收集到内部对象列表中。
下面的解决方案几乎可以正确工作,但它创建了一个 OuterObjects 列表而不是 InnerObjects 列表。
List<OuterObject> result = outerObjects.stream()
.filter(outerObject -> innerObjects().stream()
.anyMatch(innerObject -> someBooleanMethod(innerObject, outerObject).
.collect(Collectors.toList());
如何重写它以获得InnerObjects
列表?
最佳答案
只需流式传输内部列表
:
List<InnerObject> result =
innerObjects.stream()
.filter(innerObject -> outerObjects.stream()
.anyMatch(outerObject -> someBooleanMethod(innerObject, outerObject)))
.collect(Collectors.toList());
或者,如果您必须通过外部List
进行流式传输,请将每个OuterObject
映射
到第一个匹配的InnerObject
:
List<InnerObject> result =
outerObjects.stream()
.map(outerObject -> innerObjects.stream()
.filter(innerObject -> someBooleanMethod(innerObject, outerObject))
.findFirst()
.orElse(null))
.filter(Objects::nonNull)
.collect(Collectors.toList());
关于java - 外循环的流,但收集到内循环对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52855713/
在以下python代码中: narg=len(sys.argv) print "@length arg= ", narg if narg == 1: print "@Usage: in
我需要遍历三个列表并处理每个组合。最外层和第二级循环(list1/list2)的顺序取决于一些排序规则。此外,我在最后一个 (list3) foreach 循环之前和之后都有一些逻辑。ProcesPa
这个问题在这里已经有了答案: How do I break out of nested loops in Java? (37 个回答) 关闭6年前. 如果我在循环中有循环,并且一旦满足 if 语句我想
谁能解释一下这个算法的时间复杂度是多少? for (i = 1; i = n + n/2 + n/3 ... n/n但是是 < n + 1 + n/2 + 1 + n/3 + 1 + n/4 + 1.
我将更新从 foreach 循环生成的特定 ID 的值字段。 $sql = "SELECT `user_id`, max(case when `meta_key` = 'link' the
我是一名优秀的程序员,十分优秀!