merge函數
今天在刷lc,從靈神題解中學到的
來源:560. 和為 K 的子數組 - 力扣(LeetCode)
java8 merge()方法被引入到HashMap類中,用于簡化鍵值對操作,在處理鍵值對時,提供一個重新映射函數來決定如何合并新舊值
merge語法
hashmap.merge(key, value, remappingFunction)
- key: 鍵
- value: 值
- remappingFunction: 重新映射函數,用于重新計算值
傳統
int ans = 0;
Map<Integer, Integer> mp = new HashMap<>(n + 1);for(int sj : s){ans += mp.getOrDefault(sj - k, 0);int num = mp.getOrDefault(sj, 0);mp.put(sj, num + 1);
}
merge
庫
Integer::sum
int ans = 0;
Map<Integer, Integer> mp = new HashMap<>(n + 1);for(int sj : s){ans += mp.getOrDefault(sj - k, 0);mp.merge(sj, 1, Integer::sum);
}
自定義
int ans = 0;
Map<Integer, Integer> mp = new HashMap<>(n + 1);for(int sj : s){ans += mp.getOrDefault(sj - k, 0);mp.merge(sj, 1, (oldValue, newValue)->(oldValue + newValue));
}