1
添加到Java 8中HashMap中包含的BigDecimal的最简单方法是什么?如何在Java 8中添加包含在HashMap中的BigDecimals?
添加到Java 8中HashMap中包含的BigDecimal的最简单方法是什么?如何在Java 8中添加包含在HashMap中的BigDecimals?
此前的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方法:
BigDecimal.ZERO
)HashMap::get
),并将其添加
这可以使用一些阐述。 “包含在HashMap中”含糊不清,并且不区分BigDecimal键和BigDecimal值。根据你自己对你问题的回答,看起来你打算问如何通过密钥来累积BigDecimal地图值。 – VGR 2015-03-02 21:46:26
对不起,我感到困惑。在此之前,我从未使用过BigDecimal作为密钥,是的,我的意思是将BD存储为值。另外,为什么你会想要“添加”一个存储为密钥的'BigDecimal'?按键往往需要保持不变 – ryvantage 2015-03-02 22:50:56