所以我已經完成了一個程序,並有幫助建立它/與另一個人一起工作。我瞭解每一行代碼除了一部分以外的所有程序。這是代碼:這段代碼的功能不完全清楚嗎? (包括Set,HashMap和.keySet())
Set<String> set1 = firstWordGroup.getWordCountsMap().keySet();
Map<String, Integer> stringIntegerMap1 = set1.stream().collect(HashMap::new,
(hashMap, s) -> hashMap.put(s, s.length()), HashMap::putAll);
stringIntegerMap1.forEach((key,value) ->System.out.println(key + " : "+value));
一些背景資料:
getWordCut是看起來像這樣的方法:)
公衆的HashMap getWordCountsMap({
HashMap<String, Integer> myHashMap = new HashMap<String, Integer>(); for (String word : this.getWordArray()) { if (myHashMap.keySet().contains(word)) { myHashMap.put(word, myHashMap.get(word) + 1); } else { myHashMap.put(word, 1); } } return myHashMap; }
firstWordGroup是一個存儲一串單詞的構造函數。
如果有人能夠準確解釋這段代碼的作用以及它是如何做的,那麼這將是有益的,謝謝。 P:我不知道是否提供整個程序來重現代碼是相關的,所以如果你認爲是這樣的話,只需留下評論,然後我將編輯問題以便重現該程序。
我在我的答案中解釋了'putAll'。收集器旨在允許單獨的執行線程收集不同的元素,然後將它們合併。 putAll是將結果結合在一起的方法。正在合併的地圖將具有不同的元素,因此將所有元素從一個元素轉換爲另一個元素正在有效地合併它們。 – sprinter
感謝您的解釋,我認爲我們大約在同一時間按下提交按鈕,因爲兩個響應一起踢起來1謝謝。 –
是的,我懷疑我們都看到了每個人的答案,並想知道:-) – sprinter