如何识别 HashMap 中的哪个值给出了一个 true,然后用它做点什么?



我用Java编写了一个lambda表达式,它从LinkedHashMap中获取键和值(键和值都是自定义对象的(。Lambda 表达式获取键(包含字符串名称(和值(这是一个条件,要么是赢、松或平局,类型为 enum(,然后将键和值与预设条件(win、loose 或 draw,同样是枚举类型(进行比较。如果该值与预设条件相同,则返回布尔值 true,否则返回 false。

`for (Wedstrijd wedstrijd : wedstrijden)    
wedstrijd.getVoorspelling()
.forEach((key, value) -> System.out.println("User: " + key + " guessed " + value.equals(wedstrijd.getUitslag())));

这就像我希望它工作并返回一样工作,例如(控制台输出(:

The Preset condition is:
WIN
User
"David: guessed" true
"Andrew: guessed" false

现在我想给用户点,如果他们猜对了。因此,如果布尔值为真。每次运行 for 每个循环时都需要发生这种情况。 我整天都在做这件事,我想不出办法解决这个问题。 使用我之前写的 lambda 可以做到这一点吗?还是我需要为此构建一个单独的方法?如果是这样,我将如何去做?

你可以执行以下操作

wedstrijd.getVoorspelling()
.forEach((key, value) -> {
many statements as mentioned above
}));

wedstrijd.getVoorspelling()
.forEach((key, value) -> anotherMethod(key,value)        
));
anotherMethod(key,value){
logic here
}
wedstrijd.getVoorspelling()
.forEach((key, value) -> {
boolean matches = value.equals(wedstrijd.getUitslag();
System.out.printf("User: %s guessed %s%n", key, matches));
if (matches) {
... give points
}
});

我认为问题源于新的语法变化。而不是System.println(...)可以添加{ ... }.

相关内容

最新更新