merge函数

88 阅读1分钟

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