2016-02-05 93 views
0

我正在製作洗衣程序。用戶選擇這樣的項目。HashMap <String,ArrayList <Integer>>獲取值

enter image description here

,我有三對的TabBar(幹,洗臉,洗和鐵)。 而我存儲在三個不同的用戶選擇的物品商店HashMap<String, ArrayList<Integer>>

我的價值存儲在像這樣的哈希映射。

Key:Name, Value:[Quantity, Default-Price, Qty-Total, position] 
    Key: Trouser, Value: [2, 8, 16, 3] 
    Key: Shirt, Value: [3, 15, 45, 0] 
    Key: Coat, Value: [2, 7, 14, 2] 
    Key: Pants, Value: [3, 10, 30, 1] 

我想在三個不同的HashMap中總和第三個元素(16,45,14,30)。 對於所有項目總計。

+0

到目前爲止你做了什麼?你有一個示例代碼? – Rudra

+0

你想做什麼?獲取每個列表的最大值?獲取每個列表的第三個值?還有別的嗎? –

+0

在這裏看到我的舊帖子http://stackoverflow.com/questions/35199498/dynamic-listview-with-button-click-get-grand-total –

回答

1

如果map是你HashMap<String, ArrayList<Integer>>然後遍歷地圖,並從ArrayList第三值,總結it.Try此,

HashMap<String, ArrayList<Integer>> map = new HashMap<>(); 
    int sum = 0; 
    for (Map.Entry<String, ArrayList<Integer>> item : map.entrySet()) { 
     sum += item.getValue().get(2); 
    } 
0
Map<Integer, List<Integer>> map = new HashMap<Integer, List<Integer>>(); 
     // create list one and store values 
     List<Integer> valSetOne = new ArrayList<Integer>(); 
     valSetOne.add(5); 
     valSetOne.add(8); 
     // create list two and store values 
     List<Integer> valSetTwo = new ArrayList<Integer>(); 
     valSetTwo.add(11; 
     valSetTwo.add(15); 
     // create list three and store values 
     List<Integer> valSetThree = new ArrayList<Integer>(); 
     valSetThree.add(6); 
     valSetThree.add(55); 
     // put values into map 
     map.put(1, valSetOne); 
     map.put(2, valSetTwo); 
     map.put(3, valSetThree); 
     // iterate and display values 
     System.out.println("Fetching Keys and corresponding [Multiple] Values n"); 
     for (Map.Entry<Integer, List<Integer>> entry : map.entrySet()) { 
      Integer key = entry.getKey(); 
      List<Integer> values = entry.getValue(); 
      System.out.println("Key = " + key); 
      System.out.println("Values = " + values + "n"); 
     } 
0

總結數組的第3個索引然後將其存儲在變量中有多難。

比方說,這是你的HashMap

HashMap<String, ArrayList<Integer>> clothes = new HashMap<>(String,ArrayList<Integer>); 

這些值..

Key: Trouser, Value: [2, 8, 16, 3] 
Key: Shirt, Value: [3, 15, 45, 0] 
Key: Coat, Value: [2, 7, 14, 2] 
Key: Pants, Value: [3, 10, 30, 1] 

int grandTol = 0; 
for (Map.Entry<String, List<Integer>> cloth : clothes.entrySet()) { 
    grandTol += entry.getValue().get(2); 

} 

通過HashMap中只需循環,並添加了值。

+0

*條目*無法解析 –

+0

檢查現在。我編輯了我的答案。 – Ritesh

0

試試這個。

int sum = map.values().stream().mapToInt(v -> v.get(2)).sum(); 
3

在此處查找完整的代碼。

public static void main(String[] args) { 
    Integer granddTotal = 0; 
    HashMap<String, ArrayList<Integer>> map = new HashMap<String, ArrayList<Integer>>(); 
    ArrayList<Integer> list = new ArrayList<Integer>(); 
    list.add(2); 
    list.add(8); 
    list.add(16); 
    list.add(3); 
    map.put("Trouser", list); 

    list = new ArrayList<Integer>(); 
    list.add(3); 
    list.add(15); 
    list.add(45); 
    list.add(0); 
    map.put("Shirt", list); 

    list = new ArrayList<Integer>(); 
    list.add(2); 
    list.add(7); 
    list.add(14); 
    list.add(2); 
    map.put("Coat", list); 

    list = new ArrayList<Integer>(); 
    list.add(3); 
    list.add(10); 
    list.add(30); 
    list.add(1); 
    map.put("Pant", list); 


    for(ArrayList<Integer> listData : map.values()) { 
     granddTotal = granddTotal + listData.get(2); 
    } 
    System.out.println(granddTotal); 
}  
相關問題