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));
}