У меня есть код ниже, чтобы проверить, равна ли сумма различных пар числу.
static int numberOfPairs(int[] a, long k) {
Integer
Map<Integer,Integer> map = new HashMap<>();
int count =0;
for(int i=0;i<a.length;i++){
for(int j=i+1;j<a.length;j++) {
if(a[i]+a[j] == k){
if((!map.containsKey(a[i])) && (!map.containsKey(k-a[i]))) {
map.put(a[i], a[j]);
count++;
}
}
}
}
return count;
}
метод содержит ключ не работает для приведенного выше кода. Bcoz k имеет тип long. Но код работает, если я преобразую long в int.
static int numberOfPairs(int[] a, long k) {
Integer
Map<Integer,Integer> map = new HashMap<>();
int count =0;
for(int i=0;i<a.length;i++){
for(int j=i+1;j<a.length;j++) {
if(a[i]+a[j] == k){
int x=(int)k-a[i];
if((!map.containsKey(a[i])) && (!map.containsKey(x))) {
map.put(a[i], a[j]);
count++;
}
}
}
}
return count;
}
Que: почему этого не произошлоработать с длинным типом? как работает метод containsKey?