【发布时间】:2019-05-03 20:57:18
【问题描述】:
我有下面的代码来检查不同对的总和是否等于一个数字。
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;
}
containskey 方法不适用于上述代码 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;
}
问:为什么它不适用于 long 类型?containsKey 方法是如何工作的?
【问题讨论】:
标签: java collections hashmap hashcode