如何在Java 8流forEach中使用if-else逻辑
我想做的事情显示在下面的2个流调用中。我想根据某种条件将一个集合分成2个新集合。理想情况下,我想在1中做到这一点。我已经看到了流的.map函数所使用的条件,但是forEach找不到任何东西。实现我想要的最好的方法是什么?
animalMap.entrySet().stream() .filter(pair-> pair.getValue() != null)
.forEach(pair-> myMap.put(pair.getKey(), pair.getValue()));
animalMap.entrySet().stream()
.filter(pair-> pair.getValue() == null)
.forEach(pair-> myList.add(pair.getKey()));
回答:
只需将条件放入lambda本身,例如
animalMap.entrySet().stream() .forEach(
pair -> {
if (pair.getValue() != null) {
myMap.put(pair.getKey(), pair.getValue());
} else {
myList.add(pair.getKey());
}
}
);
当然,这假设两个集合(myMap
和myList
)在上述代码之前都已声明和初始化。
Map.forEach
如JornVernee所建议的那样,使用可以使代码更短,更高效,更易读。
animalMap.forEach( (key, value) -> {
if (value != null) {
myMap.put(key, value);
} else {
myList.add(key);
}
}
);
以上是 如何在Java 8流forEach中使用if-else逻辑 的全部内容, 来源链接: utcz.com/qa/431885.html