hashMap是基于Map实现的,存储的是<key,value>键值对,切内部元素是无序的。
实现原理:
HashMap底层是由链表+数组实现的,采用数组查询效率比较高
使用链表的原因,我们通过给key的hash值取余数组长度来决定数组的下标,由此便造成了一个问题就是hash冲突,因为既然是数组,那么长度是固定的,难免会碰到两个key不同,但是获取的数组下标是相同的,便产生了冲突
当发生hash冲突时,不同的key,获取同一个数组下标,那么就会将其放入单链表中
常用方法:
添加、删除元素
HashMap<Integer,String> map = new HashMap<>();
map.put(1,"a"); //map添加一个键值对
map.put(2,"b"); //map添加一个键值对
map.put(3,"b"); //map添加一个键值对
map.remove(2); //map删除相应key值
System.out.println(map);
获取元素,清空map
HashMap<Integer,String> map = new HashMap<>();
map.put(1,"a"); //map添加一个键值对
map.put(2,"b"); //map添加一个键值对
map.put(3,"b"); //map添加一个键值对
System.out.println(map.get(2));
map.clear();
获取map大小以及迭代map
HashMap<Integer,String> map = new HashMap<>();
map.put(1,"a"); //map添加一个键值对
map.put(2,"b"); //map添加一个键值对
map.put(3,"b"); //map添加一个键值对
System.out.println(map.size());
for(Integer key :map.keySet()){ //获取所有的key
System.out.println("key:"+key+" value:" + map.get(key));
}
for(String value :map.values()){ //获取所有的value
System.out.println( "value: " + value);
}