I have a method that contains a lambda expression:
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();
}
Can someone explain to me what the last 2 lines mean? I am not new to Java, but sometimes I get confused with some expressions like this one.