gpt4 book ai didi

java - 如何在 Java 8 流 forEach 中使用 if-else 逻辑

转载 作者:IT老高 更新时间:2023-10-28 20:50:50 25 4
gpt4 key购买 nike

下面的 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 使代码更短、更高效、更易读,如 Jorn Vernee温馨提示:

    animalMap.forEach(
(key, value) -> {
if (value != null) {
myMap.put(key, value);
} else {
myList.add(key);
}
}
);

关于java - 如何在 Java 8 流 forEach 中使用 if-else 逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38021061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com