gpt4 book ai didi

java - 如何根据先验条件更新 HashMap 中的值?

转载 作者:行者123 更新时间:2023-12-01 16:46:15 27 4
gpt4 key购买 nike

关于 HashMap 和 for 循环的一些基本知识对我来说很难理解。我想做的是每次数组列表中的值与键字符串关联时,根据 Keys 方法将 +1 添加到与键关联的值。

因此,如果数组列表中有 3 个值为正的值,则 HashMap 应将键为“正”的值更新为 3。

任何帮助/建议将不胜感激 - 谢谢。

public String Keys(double input){

if (input > 0){
System.out.println("positive");
}
else if (input < 0) {
System.out.println("negative");
}
else if (input == 0) {
System.out.println("zero");
}
return "";
}

public HashMap<String, Integer> increaseValues(ArrayList<Double> inputs){
HashMap<String, Integer> hashMap = new HashMap<>();
hashMap.put("positive", 0);
hashMap.put("negative", 0);
hashMap.put("zero", 0);

//What I tried before adding the Keys method.
//This updates the value but the loop won't continue if another input in the
//arraylist is true.

for (int i = 0; i < inputs.size(); i++){
double input = inputs.get(i);

if (input > 0){
hashMap.put("positive", 1);
} else if (input < 0){
hashMap.put("negative", 1);
} else if (input == 0){
hashMap.put("zero", 1); }
return hashMap;
}

public void main(String[] args){
ArrayList<Double> inputs = new ArrayList<>();
inputs.add(-4.56);
inputs.add(-4.66);
inputs.add(0.0);
inputs.add(6.0);
inputs.add(-6.99);
inputs.add(6.97);
}

最佳答案

Map.put(k, v) 始终覆盖您之前的值。您可以使用“传统方法”:

if (!map.containsKey("positive"))
map.put("positive", 0);
map.put("positive", map.get("positive") + 1);

或者更好地使用针对此类情况添加的新merge 函数:

map.merge("positive", 1, (prev, one) -> prev + one);

但是通过使用 Math.signum() 和流收集器可以大大缩短整个逻辑:

Map<Double, Long> collect = inputs.stream()
.collect(Collectors.groupingBy(Math::signum,
Collectors.counting()));
System.out.println("positive: " + collect.get(1.0));
System.out.println("negative: " + collect.get(-1.0));
System.out.println("zero: " + collect.get(0.0));

关于java - 如何根据先验条件更新 HashMap 中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094619/

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