20180804_14_Java中Map集合的一些介绍

Map集合

       概述:       接口Map<K, V>

                            K:   此映射所维护的键的类型

                            V:   映射值的类型

              将键映射到值的对象。一个映射不能包含重复的键;   每个     键最多只能映射到一个值。

       基本功能:

              V put(K key,V value)

              将指定的值与此映射中的指定键关联。键相同 值覆盖 

              V remove(Object key)      

              如果存在一个键的映射关系,则将其从此映射中移除。

              void clear()

              从此映射中移除所有映射关系

              boolean containsKey(Object key)

              如果此映射包含指定键的映射关系,则返回 true。

              boolean containsValue(Object value)

              如果此映射将一个或多个键映射到指定值,则返回 true。

              boolean isEmpty()

              如果此映射未包含键-值映射关系,则返回 true。

              int size()

              返回此映射中的键-值映射关系数。

       获取功能:

              V get(Object key)

                     返回指定键所映射的值;如果此映射不包含该键的映射关                     系,则返回 null。

              Set<K> keySet()

              返回此映射中包含的键的 Set 视图。

              Collection<V> values()

              返回此映射中包含的值的 Collection 视图。

       遍历:

              方式1)键找值。keySet() get()

HashMap<Integer, Student> hashMap = new HashMap<>();

Set<Integer> keys = hashMap.keySet();

for (Integer key : keys){

       Student      student       =     hashMap.get(key);             System.out.println(key+"-"+student.getName()+"-"+student.getAge());

}            

              方式2)键值对对象找键和值 entrySet()

HashMap<Integer, Student> hashMap = new HashMap<>();

Set<Map.Entry<Integer, Student>> entries = hashMap.entrySet();

for (Map.Entry<Integer, Student> entry: entries){

    Integer key = entry.getKey();

    Student    value    =     entry.getValue();            System.out.println(key+"-"+value.getName()+"-"+value.getAge());

}

       实现类:HashMap,Hashtable,TreeSet

HashMap

       基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

      

LinkedMap

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

      特点: 底层的数据结构是链表和哈希表 元素有序 并且唯一, 元素的有序性由链表数据结构保证 唯一性由 哈希表数据结构保证

TreeMap

      概述:键的数据结构是红黑树,可保证键的排序和唯一性 

      ,排序分为自然排序和比较器排序,线程是不安全的效率 比较高。

猜你喜欢

转载自blog.csdn.net/Lisiluan/article/details/81429025