HashMap
键值对关系,值可以重复,可以实现多对一,可以查找重复元素
记录:
做算法遇到好多次了,就总结一下大概用法。
例如今天遇到的这个题:
寻找出现一次的数,那就使用哈希表来存储,键的值为1的就是我们要找的。
知识点:
构建:
HashMap<Integer,Integer> map = new HashMap<Integer,Integer>();
创建对应的键和值
getOrDefault() 方法获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值。
getOrDefault() 方法的语法为:
hashmap.getOrDefault(Object key, V defaultValue)
for (int num : nums) {
map.put(num, map.getOrDefault(num,0)+1);
}
映射对应的键值:
由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系。
Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value (我们总说键值对键值对, 每一个键值对也就是一个Entry)
Map.Entry里面包含getKey()和getValue()方法
entrySet是 java中 键-值 对的集合,Set里面的类型是Map.Entry,一般可以通过map.entrySet()得到。
entrySet实现了Set接口,里面存放的是键值对。一个K对应一个V。
实现
int ans =0;
for(Map.Entry<Integer,Integer> entry: map.entrySet()){
int num = entry.getKey(),occ = entry.getValue();
if(occ ==1){
ans = num;
break;
}
}