2015-03-02 87 views
1

添加到Java 8中HashMap中包含的BigDecimal的最簡單方法是什麼?如何在Java 8中添加包含在HashMap中的BigDecimals?

+0

這可以使用一些闡述。 「包含在HashMap中」含糊不清,並且不區分BigDecimal鍵和BigDecimal值。根據你自己對你問題的回答,看起來你打算問如何通過密鑰來累積BigDecimal地圖值。 – VGR 2015-03-02 21:46:26

+0

對不起,我感到困惑。在此之前,我從未使用過BigDecimal作爲密鑰,是的,我的意思是將BD存儲爲值。另外,爲什麼你會想要「添加」一個存儲爲密鑰的'BigDecimal'?按鍵往往需要保持不變 – ryvantage 2015-03-02 22:50:56

回答

9

此前的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. 它的清潔