[英]nested loops involving conditions in java 8
我有一段代码
List<Obj1> result = new ArrayList<Obj1>();
for (Obj1 one : list1) {
for (Obj2 two : list2) {
if (one.getStatus() == two) {
result.add(one);
}
}
}
在Java 8中使用流我可以像这样写
list1.stream().forEach(one -> {
if (list2.stream().anyMatch(two -> one.getStatus() == two)) {
result.add(one);
}
});
这可以大大简化。
假设list2
包含唯一值,并且您可以对Obj2
使用equals
而不是==
,您可以这样写:
List<Obj1> result = list1.stream()
.filter(one -> list2.contains(one.getStatus()))
.collect(Collectors.toList());
虽然将list2
元素放入Set
会更list2
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.