hashmap是基于哈希表的实现的接口,允许null值、null键
构造方法:
1)HashMap()构造一个空的HashMap,默认初始容量是16,默认负载系数是0.75
2)HashMap(int initialCapacity)构造一个空的HashMap具有指定的初始容量和默认负载因子0.75
3)HashMap(int initialCapacity,float loadFactor)构造一个空的HashMap,具有指定的初始容量和负载因子
常见的一些方法:
clone()-返回此HashMap实例的浅拷贝,键和值本身不被克隆
containsKey(Object key)-如果此映射包含指定键的映射,则返回true
containsValue(Object value)-r如果此地图将一个或多个键映射到指定值,则返回true
entrySet()-返回此地图中包含的映射的Set视图
get(Object key)-返回到指定键所映射的值,或null,如果此映射包含该键的映射
getOrDefault(Object key,V defaultValue)-返回到指定键所映射的值,或defaultValue如果此映射包含该键的映射
isEmpty()-如果此映射包含该键的映射,则返回true
put(K key,V value)-将指定的值与此映射中的指定键相关联
以此题为例,来了解HashMap中的一些方法
题目描述:数组中出现超过一半的元素
import java.util.Iterator;
import java.util.HashMap;
public class Solution {
public int MoreThanHalfNum_Solution(int [] array) {
HashMap<Integer,Integer> hashmap = new HashMap<Integer,Integer>();//创建HashMap,使数字与其出现的次数一一对应
for(int i = 0;i < array.length;i++){
if(!hashmap.containsKey(array[i])){//判断hashmap是否包含数值array[i],如果不包含,则放入hashmap中
hashmap.put(array[i],1);
}else{
int count = hashmap.get(array[i]);
hashmap.put(array[i],++count);
}
}
Iterator iterator = hashmap.entrySet().iterator();//iterator是迭代器
while(iterator.hasNext()){
HashMap.Entry entry = (HashMap.Entry)iterator.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
if(value > array.length/2){
return key;
}
}
return 0;
}
}