gpt4 book ai didi

java - 无法使用三元运算符更新HashMap的值

转载 作者:行者123 更新时间:2023-12-01 16:43:40 25 4
gpt4 key购买 nike

我试图在List对象中使用forEach函数在lambda内使用三元运算符将值放入HashMap中。但这给了我一些错误。喜欢 ...

这有效

for (Long aLong: arr) {         
if (hashMap.containsKey(i)) {
hashMap.put(i, hashMap.get(i) + 1);
} else {
hashMap.put(i, 1L);
}
}


这有效

for (Long aLong: arr) {
hashMap.containsKey(i)
? hashMap.put(i, hashMap.get(i) + 1)
: hashMap.put(i, 1L);
}


这也有效

arr.forEach(i -> {
if (hashMap.containsKey(i)) {
hashMap.put(i, hashMap.get(i) + 1);
} else {
hashMap.put(i, 1L);
}
});


但是这都不

arr.forEach(i -> {
hashMap.containsKey(i)
? hashMap.put(i, hashMap.get(i) + 1)
: hashMap.put(i, 1L);
});


也没有

arr.forEach(i -> hashMap.containsKey(i) 
? hashMap.put(i, hashMap.get(i) + 1)
: hashMap.put(i, 1L));


作品。为什么?

最佳答案

我认为由于尝试返回某些内容(代码中不允许使用)而无法正常工作。见Java: Ternary with no return. (For method calling)

在您的代码中更好地使用

arr.forEach(i -> hashMap.put(i, hashMap.getOrDefault(i, 0L) + 1L));

关于java - 无法使用三元运算符更新HashMap的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57349029/

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