开发者社区> 技术小哥哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Java刷题知识点之Map的两种取值方式keySet和entrySet、HashMap 、Hashtable、TreeMap、LinkedHashMap、ConcurrentHashMap 、WeakHashMap

简介:
+关注继续查看

  接口java.util.Map,包括3个实现类:HashMap、Hashtable、TreeMap。当然还有LinkedHashMap、ConcurrentHashMap 、WeakHashMap。

  Map是用来存储键值对的数据结构,键值对在数组中通过数组下标来对其内容索引的,而键值对在Map中,则是通过对象来进行索引,用来索引的对象叫做key,其对应的对象叫value

 

 

 

 

Map与Collection在集合框架中属并列存在

  Map是一次添加一对元素(存储的是夫妻,哈哈)。Collection是一次添加一个元素(存储的是光棍,哈哈)。
  Map存储的是键值对。
  Map存储元素使用put方法, Collection使用add方法。
  Map集合没有直接取出元素的方法, 而是先转成Set集合, 再通过迭代获取元素。
  Map集合中键要保证唯一性。

 

 

 

 

Map的两种取值方式keySet、entrySet
  keySet
    先获取所有键的集合, 再根据键获取对应的值。(即先找到丈夫,去找妻子)
  entrySet
    先获取map中的键值关系封装成一个个的entry对象, 存储到一个Set集合中,再迭代这个Set集合, 根据entry获取对应的key和value。
  向集合中存储自定义对象 (entry类似于是结婚证)

   HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。
TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。

 

 

  keySet的演示图解:

 

 

 

 

  

  entrySet的演示图解:

 

 

 

 

 

 

 

 HashMap概述

  HashMap是基于哈希表的Map接口的非同步实现,此实现提供所有可选的映射操作,并允许使用null值和null键

  它不保证映射的顺序,HashMap是Hashtable的轻量级实现(非线程安全的实现),它们都完成了Map接口。

   

 

 

 

HashMap的数据结构

  哈希表是由数组+链表组成的,(注意,这是jdk1.8之前的)数组的默认长度为16。

  为什么是数组+链表? 

      数组对于数据的访问如查找和读取非常方便,链表对于数据插入非常方便。

      链表可以解决hash值冲突(即对于不同的key值可能会得到相同的hash值)

  数组里每个元素存储的是一个链表的头结点。而组成链表的结点其实就是hashmap内部定义的一个类:Entity

  Entity包含三个元素:key,value和指向下一个Entity的next

 



本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/archive/2017/10.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【算法之旅】(No.3-无重复字符的最长子串) | Java刷题打卡
【算法之旅】(No.3-无重复字符的最长子串) | Java刷题打卡
0 0
【算法之旅】(No.1-两数之和) | Java刷题打卡
【算法之旅】(No.1-两数之和) | Java刷题打卡
0 0
Java刷题面试系列习题(六)
Java刷题面试系列习题(六)
0 0
Java刷题面试系列习题(五)
Java刷题面试系列习题(五)
0 0
Java刷题面试系列习题(四)
Java刷题面试系列习题(四)
0 0
Java刷题面试系列习题(三)
Java刷题面试系列习题(三)
0 0
Java刷题面试系列习题(二)
Java刷题面试系列习题(二)
0 0
Java刷题面试系列习题(一)
Java刷题面试系列习题(一)
0 0
【Day17】Java算法刷题 【面试题 01.08. 零矩阵】 【844. 比较含退格的字符串】
了解Java算法刷题 【面试题 01.08. 零矩阵】 【844. 比较含退格的字符串】。
0 0
【Day16】Java算法刷题 [299. 猜数字游戏 ] [1.两数之和] [面试题 01.09. 字符串轮转 ]
学习 [299. 猜数字游戏 ] [1.两数之和] [面试题 01.09. 字符串轮转 ]。
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
JAVA 应用排查全景图
立即下载
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载