[英]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.