前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java】基础27:Map集合

【Java】基础27:Map集合

作者头像
刘小爱
发布2020-07-30 15:38:27
3460
发布2020-07-30 15:38:27
举报
文章被收录于专栏:零基础自学Java零基础自学Java

Map,这个单词很多人都认识,不过第一反应应该是“地图”,其实它还有一个意思叫“映射”。

地图从某种意义上就是映射的意思。

什么叫做映射呢?

地图上的一个点,就对应着现实生活中的一个地方,这种一一对应的关系就叫映射。

在Java里面,Map就是满足这种一一映射关系的集合,也叫双列集合。

前几天学的集合叫Collecion,是单列集合。

  • Map存储元素是一对一对的存的(就像夫妻一样),所以又叫夫妻集合。
  • Collecion存储元素是一个个存储的(就像单身狗一样),所以又叫单身狗集合。

好吧,夫妻,单身狗什么的完全是我瞎掰的,不过这样好理解好记忆。

既然要学习Map,那先看看Map集合中的继承关系:

从上到下依次学习,先学Map,再学HashMap。

Map中的元素有什么特点呢?

  • 每一个元素具有两个值:key(键),和value(值)。
  • key是不能重复的。
  • value是可以重复的

发现没有,key它就有点类似于索引的存在,它不可能重复,但是value是可以重复的。

一、常用方法

既然是集合,那毫无疑问,最重要的的几个方法无外乎就是:增、删、改、查,以及集合遍历的方法。

①put方法:增加元素、修改元素。

它和我们接触过的add方法非常类似。

其中它还有个额外的作用:如果键值对已经存在了,因为key是不能重复的,就会将对应的value值替换掉,此时,增加元素也就成了修改元素。

其返回值也有不同:

  • 如果是增加元素,会返回null。
  • 如果是修改元素,会将修改的那个元素返回;

②remove方法:删除元素。

根据key值删除对应的元素。

其返回值:该key对应的值。

③get方法:获取元素

根据key值获取对应的值。

返回值:该key值对应的值。

④size方法:map元素数量

存了三对值,元素数量也就是3。

其中还有两个常用方法:keySet方法和entrySet方法

二、Map集合遍历

Map最重要的一个关键要素一定要牢牢记住:

Map集合里面一个元素包含:一个key和一个value,key就叫键,value就叫值,它们合在一起就叫键值对

1.遍历方式一:根据key找value

数组里面是如何遍历的?

一个for循环直接遍历,因为索引是有序的,从0开始依次往后,所以能直接用。

key值就类似于索引,但是它不允许重复,也不是有序的,所以需要先获取集合中所有的key值,再遍历。

①keySet方法:获取集合中的所有key值。

因为Map集合中的key值很多,它返回的也是一个集合,因为key值不可能重复,所以是Set集合。

②增强for循环:

将每一个key遍历出来,再用get根据key值获取对应的value。

2.遍历方式二

该方式的核心思想就是将:一个Map集合转换成一个Set集合。

就是把Map中的key和value当成一个值,也就是键值对(entry)。

Map集合不能直接使用迭代器或者增强for循环进行遍历,但是转成Set之后就可以使用了。

①entrySet方法:获取Map集合中的键值对集合

就相当于把Map集合转换成Set集合。

Set集合怎么遍历?直接增强for循环

②增强for循环遍历Set集合

这样就可以得到集合中所有的键值对。

③getValue方法:获取键值对中的value

从键值对中获取其中的值。

④getKey方法:获取键值对中的key。

从键值对中获取其中的键。

三、HashMap、TreeMap

1.HashMap

HashMap是Map的一个实现类,看它的名字就知道,它的底层结构是哈希表。

那HashSet和HashMap有什么关系呢?

  • HashMap一个元素有两个值:key和value,其中key不可重复,value可以重复;
  • HashSet一个元素有一个值,并且这个值能重复。

看出它们的相同点了没有?

其实HashSet就是HashMap,只不过HashSet只使用了HashMap中的key,value底层用其他一个不可变的值代替了。

现在发现Map和Set的区别没有,本质上Set就是Map中key那一列

2.LinkedHashMap

LinkedHashMap,同样的道理,它和LinkedHashSet也是一回事。

LinkedHashMap是HashMap的一个子类,其作用和LinkedHashSet一样,就是元素有先后顺序了。

3.TreeMap

还是一样,TreeMap和TreeSet也是一回事。

TreeSet有何特点:

我们都知道Set它的元素打印出来是无序的,但是TreeSet它的元素又是有序的了,并且默认是升序排序的。

底层是怎么做到的呢?

很简单,还记得昨天学过的比较器么?因为其底层是实现了比较器Comparable接口,所以有了排序规则。

所以因为这个关系,如果是我们自己创建的类,要将类放入TreeSet的话,就得自己实现Comparable接口,并且自定义规则。

TreeMap也是同样的道理,只不过它有序的是key。

总结:
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 刘小爱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、常用方法
  • 二、Map集合遍历
  • 三、HashMap、TreeMap
  • 总结:
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档