码迷,mamicode.com
首页 > 编程语言 > 详细

Java集合之Map

时间:2020-07-27 09:25:59      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:api   get   ble   tree   hashcode   适合   map接口   速度   映射   

Map基础介绍

什么是map数据结构

  • 底层就是一个数组结构,数组中的每一项又是一个链表,即数组和链表的结合体
  • Table是数组,数组的元素时Entry
  • Entry元素时一个key-value键值对,它持有一个指向下一个Entry元素的引用,table数组的每个entry元素同时也作为当前Entry链表的首节点,也指向了该链表的下一个Entry元素

常见的实现类

HashMap

  • 一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射
  • 是基于hashing的原理,使用put(key,value)存储对象到HashMap中,使用get(key)从HashMap中获取对象。当put()方法传递键和值时,会先对键调用hashCode()方法,计算并返回的hashCode是用于找到Map数组的bucket位置来存储Entry对象的,是非线程安全的,所以HashMap从操作速度很快

TreeMap

  • 在数据的存储过程中,能够自动对数据进行排序,实现了StoredMap接口,它是有序集合
  • TreeMap使用的存储结构是平衡二叉树,也成为红黑树
  • 默认排序规则:按照key的字典顺序来排序(升序),也可以自定义排序规则,要实现Comparator接口

Map常用API

Map<String,String> map = new HashMap<>();
//往map??放key - value;
map.put("?明","?东?州");
map.put("?东","?东深圳");
//根据key获取value
map.get("?东");
//判断是否包含某个key
map.containsKey("?明");
//返回map的元素数量
map.size();
//清空容器
map.clear();
//获取所有value集合
map.values();
//返回所有key的集合
map.keySet()
//返回?个Set集合,集合的类型为Map.Entry , 是Map声明的?个内部接?,接?为泛型,定义为Entry<K,V>//它表示Map中的?个实体(?个key-value对),主要有getKey(),getValue?法
Set<Map.Entry<String,String>> entrySet = map.entrySet();
//判断map是否为空
map.isEmpty();

常见Map面试题(重要)

HashMap和TreeMap如何选择

  1. HashMap可实现快速存储查询,但缺点是包含的元素是无序的,适合于在Map中插入、删除、查询
  2. TreeMap便捷的实现对其内部元素的各种排序,但其一般性能(插入、删除、查询)比HashMap差适用于自然顺序或自定义顺序遍历键(key)

jdk1.7和jdk1.8中的HashMap的主要区别

  • 底层实现数组+链表改为数组+链表+红黑树

什么时候开始转变

  当链表节点较少时仍然是以链表存在,当链表节点较多时,默认是大于8时会转为红黑树

技术图片

 

Java集合之Map

标签:api   get   ble   tree   hashcode   适合   map接口   速度   映射   

原文地址:https://www.cnblogs.com/chenyanbin/p/13383035.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!