gpt4 book ai didi

java - 循环内的条件操作,java 8 方式

转载 作者:行者123 更新时间:2023-12-03 19:41:28 25 4
gpt4 key购买 nike

我有一个 for 循环,它根据循环对象的值运行不同的方法。普通的旧 Java 方式是这样的

for(Object obj : inputList){
if(1 == obj.intVar){
executeFirst();
} else if (2 == obj.intVar) {
executeSecond();
} else {
executeDefault();
}
}

或者使用一个简单的 switch case。
我知道我可以在 Java 8 中使用类似下面的东西。但对我来说,它似乎是 Java 7 和 8 之间的融合。我不确定我是否可以在这里使用 filter/map/reduce 作为目的不是数据操作,而是导出特定行为。有没有什么办法可以用纯 Java 8 的方式做到这一点,或者就是这样吗?

inpultList.stream().forEach(obj -> {
if(1 == obj.intVar){
executeFirst();
} else if (2 == obj.intVar) {
executeSecond();
} else {
executeDefault();
}
});

提前致谢。

最佳答案

对于您的简单示例,这可能有点过度设计,但一般的解决方案是使用带有处理程序的 Map:

Map<Integer,Runnable> handlers = new HashMap<>();
handlers.put(1, () -> executeFirst());
handlers.put(2, () -> executeSecond());
inputList.stream()
.map(obj -> handlers.getOrDefault(obj.intVar, () -> executeDefault()))
.forEach(Runnable::run);

inputList.forEach(obj -> handlers.getOrDefault(obj.intVar, () -> executeDefault()).run());

关于java - 循环内的条件操作,java 8 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49746594/

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