栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Map集合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Map集合

Map接口:键(key)值(value)对存储,是双列集合。

(键不可以重复,值可以重复)

Map接口有三个实现类:

1、HashMap (线程不安全,hash表+红黑树+链表结构)

2、TreeMap(底层红黑树实现)

3、Hashtable(线程安全)

HashMap常用方法

1、put方法向HashMap集合中添加元素

HashMap map=new HashMap<>();
        map.put("a", "a");
        map.put("b", "a");
        map.put("c", "a");
        map.put("a", "ss");

底层数组用来定位元素位置,元素Hash值除以数组长度=位置,但有可能不同元素的不同的Hash值计算出的位置却是一样的,所以用链表来存储相同位置元素。

put方法具体过程:当向其中添加元素时,先用Key值计算出Hash值,通过hash算法计算出此元素在hash数组中的位置,如果这个位置上没有元素,则直接将其插入(Node),当我们在此插入值时,如果计算出的位置上已经有了元素,则直接向元素的下一位添加(此时是链式结构),当这个链表长度等于八时,链表自动转化为红黑树(当我们删减元素时,如果删到链表长度为6时,则红黑树自动有转换会链表),当哈希数组的长度被使用了0.75倍时,hash数组会进行2倍扩容(数组长度必须为2的倍数,相当于我们舍弃了一部分空间来换取了效率)。

注:当元素插入位置已有元素时,会有三种情况:

有重复元素(键),则只替换值即可。

链表,直接向后插入即可。

红黑树,直接添加即可。

要注意,以上的代码实现均是源码底层put方法已实现好的,我们只需了解清除原理即可。

 

2、其他常用方法:

  //常用方法
        map.remove("a");//由key值来删除整对
        System.out.println(map.get("b"));//通过key来找value,返回的是value值
        map.containsKey("b");//判断有没有这个键
        map.containsValue("a");//判断有没有这个值
        Set kset=map.keySet();//此方法返回的是这个HashMap的所有key,用set集合来存储,值不可以重复
        Collection list=map.values();//返回这个的Map集合的值

总之,HashMap中的put方法值得我们去深思。

TreeMap:底层红黑树实现,key所在类必须实现Comparable接口,可以按照值自然顺序排序,

也是键值两列,其余与TreeSet类似。

HashTable:线程安全的,其中不能存储key为null的元素,底层也是hash结构,但他是线程安全的,在并发量较低的情况下使用。

Map集合的迭代问题:

增强for:

HashMap map=new HashMap<>();
        map.put("a", "a");
        map.put("b", "a");
        map.put("c", "a");
        map.put("a", "ss");
        //第一种遍历方式   遍历:指找到所有key和value
        Set set=map.keySet();//先获取所有键
        for(String key:set){
            System.out.println(key+"="+map.get(key));//通过键来找值
        }

通过Entry类来遍历Map集合(建议使用):

map底层为了方便遍历,将键和值都存入了一个Entry对象中,并将多个Entry对象即多个元素放到一个Set集合中,当我们要使用时,直接调用Map中的entryset方法获得这个集合即可。

  Set> entrySet=map.entrySet();//获得这个Entry集合
        for(Map.Entry s:entrySet){
            System.out.println(s.getKey()+"="+s.getValue());
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683637.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号