gpt4 book ai didi

java - 如何使用 Java 8 添加 HashMap 中包含的 BigDecimals?

转载 作者:行者123 更新时间:2023-11-29 09:53:15 24 4
gpt4 key购买 nike

在 Java 8 中添加到包含在 HashMap 中的 BigDecimal 的最简单方法是什么?

最佳答案

在 Java 8 之前,它将是:

public static void main(String[] args) {
HashMap<String, BigDecimal> bd_map = new HashMap<>();
bd_map.put("Shirts", BigDecimal.ZERO);
bd_map.put("Hats", BigDecimal.ZERO);
bd_map.put("Shoes", BigDecimal.ZERO);

bd_map.put("Shirts", bd_map.get("Shirts").add(new BigDecimal("5.99")));
bd_map.put("Shirts", bd_map.get("Shirts").add(new BigDecimal("4.50")));
bd_map.put("Shoes", bd_map.get("Shoes").add(new BigDecimal("15.99")));
bd_map.put("Hats", bd_map.get("Hats").add(new BigDecimal("8.00")));
bd_map.put("Shirts", bd_map.get("Shirts").add(new BigDecimal("8.99")));
bd_map.put("Shoes", bd_map.get("Shoes").add(new BigDecimal("22.00")));
bd_map.put("Hats", bd_map.get("Hats").add(new BigDecimal("7.00")));

System.out.println("Shirts: " + bd_map.get("Shirts"));
System.out.println("Hats: " + bd_map.get("Hats"));
System.out.println("Shoes: " + bd_map.get("Shoes"));
}

但是,Java 8 通过 merge() 函数使这变得更容易且更不容易出错:

public static void main(String[] args) {
HashMap<String, BigDecimal> bd_map = new HashMap<>();

bd_map.merge("Shirts", new BigDecimal("5.99"), BigDecimal::add);
bd_map.merge("Shirts", new BigDecimal("4.50"), BigDecimal::add);
bd_map.merge("Shoes", new BigDecimal("15.99"), BigDecimal::add);
bd_map.merge("Hats", new BigDecimal("8.00"), BigDecimal::add);
bd_map.merge("Shirts", new BigDecimal("8.99"), BigDecimal::add);
bd_map.merge("Shoes", new BigDecimal("22.00"), BigDecimal::add);
bd_map.merge("Hats", new BigDecimal("7.00"), BigDecimal::add);

System.out.println("Shirts: " + bd_map.get("Shirts"));
System.out.println("Hats: " + bd_map.get("Hats"));
System.out.println("Shoes: " + bd_map.get("Shoes"));
}

Java 8 方法的优点:

  1. 无需初始化原始值(BigDecimal.ZERO)
  2. 无需引用旧值(HashMap::get)并添加
  3. 很干净

关于java - 如何使用 Java 8 添加 HashMap 中包含的 BigDecimals?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28818518/

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