如何在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());

}

}

);

当然,这假设两个集合(myMapmyList)在上述代码之前都已声明和初始化。


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

回到顶部