Map集合

作者: 还是那个没头脑 | 来源:发表于2020-08-05 11:02 被阅读0次

    Map集合概述和特点

    Map集合概述

    interface Map<K,V> K:键的类型;V:值的类型

    Map集合特点

    • Map集合是一个双列集合,键值对映射关系
    • 一个键对应一个值
    • 键不能重复,值可以重复
    • 元素存取无序

    Map接口下的集合与Collection接口下的集合对比

    Map常用子类

    HashMap

    Java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>接口

    HashMap的特点:
    1.HashMap集合底层是哈希表:查询速度特别快
    JDK1.8之前:数组+单向链表
    JDK1.8之后:数组+单向链表/红黑树(链表的长度不超过8,提高查询速度)
    2.HashMap集合是一个无序的集合,存储元素和取出元素的顺序有可能不一致

    LinkedHashMap

    java.util.LinkedHashMap<k,v>集合 extends HashMap<k,v>集合

    LinkedHashMap的特点:
    1.LinkedHashMap集合底层是哈希表+链表(保证迭代的顺序)
    2.LinkedHashMap集合是一个有序的集合,存储元素和取出元素的顺序是一致的

    Map接口中的常用方法

    V put(K key,V value) 添加元素
    V remove(Object key) 根据键删除键值对元素
    void clear() 移除所有的键值对元素
    boolean containsKey(Object key) 判断集合是否包含指定的键
    boolean containsValue(Object value) 判断集合是否包含指定的值
    boolean isEmpty() 判断集合是否为空
    int size() 集合的长度,也就是集合中键值对的个数
    
    

    Map集合遍历键找值方式

    Map集合的第一种遍历方式:通过键找值的方式

    Map集合中的方法:
    Set<K> keySet() 返回此映射中包含的键的 Set 视图。

    实现步骤:
    1.使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中
    2.遍历set集合,获取Map集合中的每一个key
    3.通过Map集合中的方法get(key),通过key找到value

    Map集合遍历的第二种方式:使用Entry对象遍历

    Map集合中的方法:
    Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 试图

    实现步骤:
    1.使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中
    2.遍历Set集合,获取每一个Entry对象
    3.使用Entry对象中的方法getKey()和getValue()获取键与值

    LinkedHashMap集合

    java.util.LinkedHashMap<K,V> entends HashMap<K,V>

    Map 接口的哈希表和链接 列表实现,具有可预知的迭代顺序。

    底层原理:
    哈希表+链表(记录元素的顺序)

    Hashtable集合

    Java.util.Hashtable<K,V>集合 implements Map<K,V>接口

    Hashtable:底层也是一个哈希表,似乎一个线程安全的集合,是单线程集合,速度慢
    HashMap: 底层是一个哈希表,是一个线程不安全的集合,是多线程的集合,速度快

    HashMap集合(之前学的所有集合):可以存储null值,null键
    Hashtable集合,不能存储null值,null键

    Hashtable和Vector集合一样,在JDK1.2版本之后被更先进的集合(HashMap,ArrayList)取代了
    Hashtable的子类Properties依然活跃在历史舞台
    Properties集合是一个唯一和IO流相结合的集合

    JDK9对集合添加的优化_of方法

    JDK9的新特性:
    List接口,Set接口,Map接口:里面增加了一个静态的方法of,可以给集合一次性添加多个元素
    static <E> List<E> of (E... elements)

    使用前提:
    当集合中存储的元素的个数已经确定,,不在改变时使用

    注意:
    1.of方法只适用于List接口,Set接口,Map接口,不适用于接口的实现类
    2.of方法的返回值是一个不能改变的集合,集合不能再使用add,put方法添加元素,会抛出异常
    3.Set接口和Map接口在调用of方法的时候,不能有重复的元素,否则会抛出异常

    相关文章

      网友评论

          本文标题:Map集合

          本文链接:https://www.haomeiwen.com/subject/tkrprktx.html