1. HashMap
-
创建方式
- 不指定容量: 默认使用16
-
指定容量:
容量为用于存储数据的HashTable的主干数组的长度 - 用于存储数据的HashTable,在put( )方法第一次调用( 第一次存KV键值对 ),会进行创建
-
存储结构
基于 哈希表( Hash Table ) 设计,哈希表的主干结构是数组
JDK1.7 :采用 数组 + 单向链表
JDK1.8 :采用 数组 + 单向链表 + 红黑树 方法
- put( 键key,值value )
功能:添加元素至当前集合
传入:传入键key和与key对应的值value
返回:添加了元素KV键值对之后的Map集合 - get( 指定key )
功能:通过指定key获取对应的value
传入:指定的键key
返回:返回与key对应的值value,若传入集合不存在的key,返回value为null - clear( )
功能:清空整个集合(清空所有KV键值对)
返回:空集合 - containsKey( 指定key )
功能:检查当前集合中是否包含指定key
传入:要判断的key
返回:boolean值,如果存在返回true,否则返回false - containsValue( 指定value )
功能:检查当前集合中是否包含指定value
传入:要判断的value
返回:boolean值,如果存在返回true,否则返回false - isEmpty( )
功能:检查当前集合是否为空
返回:boolean值,如果为空返回true,否则返回false - keySet( )
功能:返回当前Map集合中所有的key键
返回:将所有的key放入一个Set集合内返回 - values( )
功能:返回当前Map集合中所有的value - entrySet( )
功能:获取集合内所有的键值对
返回:将所有的键值对放在Set集合内返回 - getKey( )
功能:获取Entry键值对中的key
返回:返回键值对中的key - getValue( )
功能:获取Entry键值对中的value
返回:返回键值对中的value - getOrDefault( 指定key,默认值 )
功能:按照指定key获取对应的value
传入:指定·的key,指定的默认值
返回:若传入的key存在,返回对应的value;否则返回默认值 - putIfAbsent( key,value )
功能:如果当前key不存在,则添加key和value至当前集合;否则,执行添加操作
传入:指定key和指定value
返回:如果key存在,则返回value;否则返回null - remove( key )
功能:按照key删除键值对
传入:指定key
返回:如果key存在,则返回value;否则返回null - replace( key,新value )
功能:按照key将所对应的value替换成新的value
传入:指定的key,和将要替换的新value
返回:如果key存在,则返回value,不存在,则返回null - replace( key,旧value,新value )
功能:按照key和旧value,如果与当前键值对一致,则用旧value替换;否则不替换
传入:指定key,原来的的旧value,和要替换的新value
返回:替换成功,则返回true;否则,返回false
2. LinkedHashMap
- 创建方式
继承自HashMap,创建方式与HashMap完全一样 - 存储特点
有序 - 存储结构
主要存储结果与HashMap保持一致
另外,LinkedHashMap内部维护了一个双向链表,用于存储顺序
3. TreeMap( 集合类 )
- 创建方式
创建方式与HashMap一致 - 存储特点
默认自动按照key进行排序 - 存储结构
采用红黑树保存数据,使用Comparetor比较器进行比较,可以进行升序存储 - 方法
lowerKey( key )
功能:找到小于指定key的一个key
传入:指定的键key
返回:如果找到,则返回key;如果没有找到,则返回nulllowerEntry( key )
功能:找到小于指定key的一个Entry键值对
传入:指定的键key
返回:如果找到,则返回对应的键值对Entry;如果没有找到,则返回nullfloorKey( key )
功能:找到小于等于指定key的一个key
传入:指定的键key
返回:如果找到,则返回该key;如果没有找到,则返回小于该key的第一个keyfloorEntry( key )
功能:找到小于等于指定key的一个Entry键值对
传入:指定的键key
返回:如果找到,则返回该key对应的键值对Entry;如果没有找到,则返回小于该key的第一个key所对应的Entry键值对higherKey( key )
功能:找到小于指定key的一个key
传入:指定的键key
返回:如果找到,则返回小于该key的第一个key;如果没有找到,则返回nullhigherEntry( key )
功能:找到大于指定key的一个Entry键值对
传入:指定的键key
返回:如果找到,则返回大于该key的第一个key对应的键值对Entry;如果没有找到,则返回nullceilingKey( key )
功能:找到大于等于指定key的一个Entry键值对
传入:指定的键key
返回:如果找到,则返回该key;如果没有找到,则返回大于该key的第一个key所对应的Entry键值对ceilingEntry( key )
功能:找到大于等于指定key的一个Entry键值对
传入:指定的键key
返回:如果找到,则返回该key;如果没有找到,则返回大于该key的一个key对应的Entry键值对putAll( 其他Map集合 )
功能:将传人的“其它Map集合”内的所有键值对,存入当前Map集合
传入:要存入的键值对元素的集合
返回:返回存入后的集合-
putIfAbsent( key,value )
功能:如果当前key存在,则不执行添加操作key-value的操作;如果当前key不存在,则执行添加操作key-value的操作
传入:要存入的KV键值对
返回:若执行了添加操作,则返回添加后的集合;若没有执行添加操作,则返回原集合 -
firstKey( )
功能:获取Map集合中的第一个key
返回:返回集合中的第一个key firstEntry( )
功能:获取Map集合中的第一个key对应的Entry键值对
返回:返回集合中的第一个key对应的Entry键值对lastKey( )
功能:获取Map集合中的最后一个key
返回:返回集合中的最后一个keylastEntry( )
功能:获取Map集合中的最后一个key对应的Entry键值对
返回:返回集合中的最后一个key对应的Entry键值对pollFirstEntry( )
功能:弹出第一个键值对元素(弹出后,Map集合中将不存在弹出的元素)
返回:弹出的键值对元素(集合中的第一个键值对)-
pollLastEntry( )
功能:弹出最后一个键值对元素(弹出后,Map集合中将不存在弹出的元素)
返回:弹出的键值对元素(集合中的最后一个键值对) -
headMap( 指定key,boolean值 )
功能:按照指定的key,从Map集合的头部键值对开始截取,截取至指定key之前
传入:只传入指定key,或传入key和一个boolean值
返回:若只传入key,则返回的头部子集合中不包含传入的指定key所对应的KV键值对;若传入key和boolean值true,则返回的头部子集合中包含传入的指定key所对应的KV键值对 -
tailMap( 指定key,boolean值 )
功能:按照指定的key,从Map集合的尾部键值对开始截取,截取至指定key之前
传入:只传入指定key,或传入key和一个boolean值
返回:若只传入key,则返回的尾部子集合中包含传入的指定key所对应的KV键值对;若传入key和boolean值false,则返回的头部子集合中不包含传入的指定key所对应的KV键值对 -
subMap( 开始key,结束key)
功能:按照开始key,截取至结束key
传入:开始截取的位置key,截取结束的位置key
返回:截取后的子集合 -
subMap( 开始key,开始key对应的boolean值,结束key,结束key对应的boolean值)
功能:按照开始key,截取至结束key
传入:开始截取的位置key,开始key对应的boolean值,截取结束的位置key,结束key对应的boolean值
返回:截取后的子集合传入的开始key的boolean值为false,结束key的boolean值为true,则返回子集合中不包含头部键值对而包含尾部键值对;否则,返回结果相反 -
remove( key )
功能:按照key进行删除键值对
传入:指定的key
返回:删除成功,则返回key对应的键值对;删除失败(key不存在),则返回null -
remove( key,value)
功能:按照KV键值对进行删除键值对
传入:指定的KV键值对
返回:删除成功,返回true;删除失败(KV键值对不存在):返回false -
replace( key,新value)
功能:将指定的key对应的值,替换为新value
传入:指定的key,要替换的新value
返回:返回原来的被替换的value replace( key,旧value,新value)
功能:将指定的KV键值对中的旧value替换成新value
传入:指定的key,要被替换的旧value,要替换的新value
返回:替换成功,返回true;替换失败(当前集合中不存在传入的KV键值对),返回false
4. HashTable
创建方式(默认容量为11)、存储特点、存储结构与HashMap保持一致
与HashMap的区别:
方法都是线程安全的,声明中都加入了synchronized
效率和速度相对较低