簡體   English   中英

Hashmap,ArrayList…如何獲取ArrayList將所有條目加在一起?

[英]Hashmap, ArrayList… how to get the ArrayList to sum all entries together?

抱歉,如果這很簡單,我對編程還是比較陌生的,在此先感謝您的幫助。 好的,正如標題中所述,我創建了一個內部帶有ArrayList的HashMap。 目前,我可以使用.getValue檢索ArrayList中的條目

我希望能夠檢索通過GUI生成的所有條目(這是我創建ArrayList的原因),但是我發現很難做到這一點。 因此,例如,如果用戶現在輸入50、45、40 ...,它將僅返回40(最后輸入的數字)。 我希望能夠檢索所有3個數字。

有什么建議么?

這是我的代碼/哈希圖:

 public class arrayList {

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


public arrayList() {}



 public void addEntryMN( String mod, Integer number ) {

ArrayList<Integer> num = new ArrayList<Integer>();
num.add(number);

myMap.put(mod, num);
 }
 }

這個問題的措詞似乎不好。 我假設您要存儲給定鍵的所有值。

答:在添加值之前,請從映射中獲取數組值。

ArrayList<Integer> numberList = myMap.get(mod);

if (numberList == null)
{
    numberList = new LinkedList<>();
}

num.add(number);

myMap.put(mod, num);

通常,與鏈表相比,更喜歡linkedList,它在增長時具有較少的開銷,並且在列表上進行迭代時具有相同的性能。

最干凈的方法是使用Java 8的流:

int sum = list.stream().reduce(0, (val1, val2) -> val1 + val2);

說明:對集合中的值求和是一種“減少”操作-您要將多個值減少為一個值-在這種情況下,將它們相加。 0(零)是“ identity”,即您要開始添加的值,而時髦的lambda(val1,val2)-> val1 + val2告訴我們應該使用集合中的int做什么:您想添加它們。

假設在列表中的值是: 1, 2, 2, 4的流可以被immagined工作如下:

- 0 + 1 = 1
- 1 + 2 = 3
- 3 + 2 = 5
- 5 + 4 = 9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM