Map集合基础总结

1. HashMap

  • 创建方式

    • 不指定容量: 默认使用16
    • 指定容量:
      容量为用于存储数据的HashTable的主干数组的长度
    • 用于存储数据的HashTable,在put( )方法第一次调用( 第一次存KV键值对 ),会进行创建
  • 存储结构

    基于 哈希表( Hash Table ) 设计,哈希表的主干结构是数组
    JDK1.7 :采用 数组 + 单向链表
    JDK1.8 :采用 数组 + 单向链表 + 红黑树

  • 方法

  1. put( 键key,值value )
    功能:添加元素至当前集合
    传入:传入键key和与key对应的值value
    返回:添加了元素KV键值对之后的Map集合
  2. get( 指定key )
    功能:通过指定key获取对应的value
    传入:指定的键key
    返回:返回与key对应的值value,若传入集合不存在的key,返回value为null
  3. clear( )
    功能:清空整个集合(清空所有KV键值对)
    返回:空集合
  4. containsKey( 指定key )
    功能:检查当前集合中是否包含指定key
    传入:要判断的key
    返回:boolean值,如果存在返回true,否则返回false
  5. containsValue( 指定value )
    功能:检查当前集合中是否包含指定value
    传入:要判断的value
    返回:boolean值,如果存在返回true,否则返回false
  6. isEmpty( )
    功能:检查当前集合是否为空
    返回:boolean值,如果为空返回true,否则返回false
  7. keySet( )
    功能:返回当前Map集合中所有的key键
    返回:将所有的key放入一个Set集合内返回
  8. values( )
    功能:返回当前Map集合中所有的value
  9. entrySet( )
    功能:获取集合内所有的键值对
    返回:将所有的键值对放在Set集合内返回
  10. getKey( )
    功能:获取Entry键值对中的key
    返回:返回键值对中的key
  11. getValue( )
    功能:获取Entry键值对中的value
    返回:返回键值对中的value
  12. getOrDefault( 指定key,默认值 )
    功能:按照指定key获取对应的value
    传入:指定·的key,指定的默认值
    返回:若传入的key存在,返回对应的value;否则返回默认值
  13. putIfAbsent( key,value )
    功能:如果当前key不存在,则添加key和value至当前集合;否则,执行添加操作
    传入:指定key和指定value
    返回:如果key存在,则返回value;否则返回null
  14. remove( key )
    功能:按照key删除键值对
    传入:指定key
    返回:如果key存在,则返回value;否则返回null
  15. replace( key,新value )
    功能:按照key将所对应的value替换成新的value
    传入:指定的key,和将要替换的新value
    返回:如果key存在,则返回value,不存在,则返回null
  16. replace( key,旧value,新value )
    功能:按照key和旧value,如果与当前键值对一致,则用旧value替换;否则不替换
    传入:指定key,原来的的旧value,和要替换的新value
    返回:替换成功,则返回true;否则,返回false

2. LinkedHashMap

  • 创建方式
    继承自HashMap,创建方式与HashMap完全一样
  • 存储特点
    有序
  • 存储结构
    主要存储结果与HashMap保持一致
    另外,LinkedHashMap内部维护了一个双向链表,用于存储顺序

3. TreeMap( 集合类 )

  • 创建方式
    创建方式与HashMap一致
  • 存储特点
    默认自动按照key进行排序
  • 存储结构
    采用红黑树保存数据,使用Comparetor比较器进行比较,可以进行升序存储
  • 方法
  1. lowerKey( key )
    功能:找到小于指定key的一个key
    传入:指定的键key
    返回:如果找到,则返回key;如果没有找到,则返回null

  2. lowerEntry( key )
    功能:找到小于指定key的一个Entry键值对
    传入:指定的键key
    返回:如果找到,则返回对应的键值对Entry;如果没有找到,则返回null

  3. floorKey( key )
    功能:找到小于等于指定key的一个key
    传入:指定的键key
    返回:如果找到,则返回该key;如果没有找到,则返回小于该key的第一个key

  4. floorEntry( key )
    功能:找到小于等于指定key的一个Entry键值对
    传入:指定的键key
    返回:如果找到,则返回该key对应的键值对Entry;如果没有找到,则返回小于该key的第一个key所对应的Entry键值对

  5. higherKey( key )
    功能:找到小于指定key的一个key
    传入:指定的键key
    返回:如果找到,则返回小于该key的第一个key;如果没有找到,则返回null

  6. higherEntry( key )
    功能:找到大于指定key的一个Entry键值对
    传入:指定的键key
    返回:如果找到,则返回大于该key的第一个key对应的键值对Entry;如果没有找到,则返回null

  7. ceilingKey( key )
    功能:找到大于等于指定key的一个Entry键值对
    传入:指定的键key
    返回:如果找到,则返回该key;如果没有找到,则返回大于该key的第一个key所对应的Entry键值对

  8. ceilingEntry( key )
    功能:找到大于等于指定key的一个Entry键值对
    传入:指定的键key
    返回:如果找到,则返回该key;如果没有找到,则返回大于该key的一个key对应的Entry键值对

  9. putAll( 其他Map集合 )
    功能:将传人的“其它Map集合”内的所有键值对,存入当前Map集合
    传入:要存入的键值对元素的集合
    返回:返回存入后的集合

  10. putIfAbsent( key,value )

    功能:如果当前key存在,则不执行添加操作key-value的操作;如果当前key不存在,则执行添加操作key-value的操作
    传入:要存入的KV键值对
    返回:若执行了添加操作,则返回添加后的集合;若没有执行添加操作,则返回原集合

  11. firstKey( )

    功能:获取Map集合中的第一个key
    返回:返回集合中的第一个key

  12. firstEntry( )
    功能:获取Map集合中的第一个key对应的Entry键值对
    返回:返回集合中的第一个key对应的Entry键值对

  13. lastKey( )
    功能:获取Map集合中的最后一个key
    返回:返回集合中的最后一个key

  14. lastEntry( )
    功能:获取Map集合中的最后一个key对应的Entry键值对
    返回:返回集合中的最后一个key对应的Entry键值对

  15. pollFirstEntry( )
    功能:弹出第一个键值对元素(弹出后,Map集合中将不存在弹出的元素)
    返回:弹出的键值对元素(集合中的第一个键值对)

  16. pollLastEntry( )

    功能:弹出最后一个键值对元素(弹出后,Map集合中将不存在弹出的元素)
    返回:弹出的键值对元素(集合中的最后一个键值对)

  17. headMap( 指定key,boolean值 )

    功能:按照指定的key,从Map集合的头部键值对开始截取,截取至指定key之前
    传入:只传入指定key,或传入key和一个boolean值
    返回:若只传入key,则返回的头部子集合中不包含传入的指定key所对应的KV键值对;若传入key和boolean值true,则返回的头部子集合中包含传入的指定key所对应的KV键值对

  18. tailMap( 指定key,boolean值 )

    功能:按照指定的key,从Map集合的尾部键值对开始截取,截取至指定key之前
    传入:只传入指定key,或传入key和一个boolean值
    返回:若只传入key,则返回的尾部子集合中包含传入的指定key所对应的KV键值对;若传入key和boolean值false,则返回的头部子集合中不包含传入的指定key所对应的KV键值对

  19. subMap( 开始key,结束key)

    功能:按照开始key,截取至结束key
    传入:开始截取的位置key,截取结束的位置key
    返回:截取后的子集合

  20. subMap( 开始key,开始key对应的boolean值,结束key,结束key对应的boolean值)

    功能:按照开始key,截取至结束key
    传入:开始截取的位置key,开始key对应的boolean值,截取结束的位置key,结束key对应的boolean值
    返回:截取后的子集合传入的开始key的boolean值为false,结束key的boolean值为true,则返回子集合中不包含头部键值对而包含尾部键值对;否则,返回结果相反

  21. remove( key )

    功能:按照key进行删除键值对
    传入:指定的key
    返回:删除成功,则返回key对应的键值对;删除失败(key不存在),则返回null

  22. remove( key,value)

    功能:按照KV键值对进行删除键值对
    传入:指定的KV键值对
    返回:删除成功,返回true;删除失败(KV键值对不存在):返回false

  23. replace( key,新value)

    功能:将指定的key对应的值,替换为新value
    传入:指定的key,要替换的新value
    返回:返回原来的被替换的value

  24. replace( key,旧value,新value)
    功能:将指定的KV键值对中的旧value替换成新value
    传入:指定的key,要被替换的旧value,要替换的新value
    返回:替换成功,返回true;替换失败(当前集合中不存在传入的KV键值对),返回false

4. HashTable

创建方式(默认容量为11)、存储特点、存储结构与HashMap保持一致
与HashMap的区别:
方法都是线程安全的,声明中都加入了synchronized
​ 效率和速度相对较低

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容