我有一个包含lambda
表达式的方法:
public int noOfComplementaryPairs1(int arr[], int k) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < arr.length; i++) {
map.merge(k - arr[i], 1, Integer::sum);
}
return Arrays.stream(arr).map(element -> map.getOrDefault(element, 0)).sum();
}
有人可以向我解释最后两行是什么意思吗?我不是Java的新手,但有时我会对像这样的表达式感到困惑。
答案 0 :(得分:3)
map.merge...
:第一个参数是地图中的键,第二个参数是地图中当不存在此键时的值,第三个参数是BiFunction
告诉你如何合并两个键,因为你不能在Map中有两个具有相同值的键。
最后一行也非常简单:您正在流式传输数组,使用:map.getOrDefault(element, 0)
映射该数组的每个元素,这意味着从map
获取值key = element
或如果不存在则默认值为零;然后sum
他们全部。