扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
小编给大家分享一下Java中什么是Map集合,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
创新互联公司服务项目包括果洛州网站建设、果洛州网站制作、果洛州网页制作以及果洛州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,果洛州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到果洛州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!一、什么是Map
不同于List单列的线性结构,Java中的Map提供的是一种双列映射的存储集合,它能够提供一对一的数据处理能力,双列中的第一列我们称为key,第二列就是value,一个key只能够在一个Map中出现最多一次,通过一个key能够获取Map中唯一一个与之对应的value值,正是它的这种一对一映射的数据处理关系,在实际应用中可以通过一个key快速定位到对应的value。
Map的三个特点:
包含键值对
键唯一
键对应的值唯一
二、Map集合常用的遍历方式
遍历Map集合的常用方式有三种:
使用keySet的方式
使用entrySet的方式
使用values()取值的方式
这三种方式中,都有对应的for循环遍历和Iterator遍历的方式取值。
keySet是键的集合,Set里面的类型即key的类型;
entrySet是键-值对的集合,Set里面的类型是Map.Entry,Entry是一个键-值对;
keySet():迭代后只能通过get()取key;
entrySet():迭代后可以e.getKey(),e.getValue()取key和value,返回的是Entry接口;
三、遍历的性能对比
for each与显示调用Iterator等价,除了第三种方式(for each map.keySet()),再调用get获取方式外,其他三种方式性能相当。本例还是hash值散列较好的情况,若散列算法较差,第三种方式会更加耗时。
1、在数据元素的数量比较大时,entrySet()方式的遍历效率快于keySet(),有两个原因 :
(1)一个原因是keySet相当于遍历了2次,一次是对key的Set集合的遍历,二次是每次遍历过程都要通过key和map.get(key)来获取value值。
(2)第二个原因是map.get(key)的时候,底层是根据key的hashCode值经过哈希算法得到一个hash值,然后作为索引映射到对应的table数组的索引位置,这是一次密集型计算,很耗费CPU,如果有大量的元素,则会使CPU使用率飙升,影响响应速度,而entrySet()返回的set里面的元素都是Map.Enpty类型,key和value就是这个类的一个属性,entry.getKey()和entry.getValue()效率肯定很高。
2、不过,在数据元素的数量比较小的情况小,keySet()方式的遍历效率快于entrySet()。
3、values()是返回Map的所有value的集合的Collection,只能遍历到value,很难遍历到key,所以一般不用,如果当我们只需要取得value值时,采用values来遍历效率更高。
4、从上面的几种方式的for循环遍历和Iterator遍历的方式耗时结果来看,Iterator遍历的效率会比for循环效率更快一点。
以上是“Java中什么是Map集合”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联-成都网站建设公司行业资讯频道!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流