Map集合

一、Map 集合接口

        Map<K,V>: K:key,键; V:value,值。
              该集合存储键值对,是成对存储的,而且存储要保证键的唯一性。
    
        常用方法:

          1、增加:
              V put(K key, V value) :当存入相同键的时候,新value值会替换旧值,并返回旧值。
              void putAll(Map<? extends K,? extends V> m)
          2、删除:
              void clear()
              V remove(Object key)

          3、判断:
              boolean containsKey(Object key)
              boolean containsValue(Object value)
              boolean isEmpty()
          4、获取:
              V get(Object key) :返回该键上的value值,可以通过返回值来判断一个键是否存在。
              int size() :返回长度。
              Collection<V> values() :返回一个collection集合,其中存储了map集合中的value值。

              Set<Map.Entry<K,V>> entrySet()
              Set<K> keySet()

     Map集合没有迭代器,所以我们使用其他方法。

        1)、Set<k> KeySet(): 将Map集合中所有的键取出存入Set集合中,再使用Set的迭代器遍历Set集合中所有的键,拿到这些键过后,
            使用 Map集合的 get()方法,获得它们对应的值。

        2)、Set<Map.Entry<K,V>> entrySet(): 将Map集合中的映射关系取出存入到Set集合中,这个映射关系就是Map.Entry类型。
            之后使用Set集合的迭代器遍历Set集合,拿到Map.Entry的对象
               通过调用这个Map.Entry对象的getKey() 和 getValue()方法来获取Map集合的键 与 值。

          Map.Entry<K,V>:Entry也是一个接口,它是Map接口的内部接口。

            interface Map<K,V>
            {
                public static interface Entry<K,V>
                {
                    public abstract K getKey();
                    public abstract V getValue();
                }
            }





二、Map的子类对象:

      1、Hashtable : 底层是Hash表数据结构,不能传入null键null值,此集合是线程同步的。《效率较低》

      2、HashMap : 底层是Hash表数据结构,允许使用null键null值,此集合线程非同步的。(其他与Hashtable基本相同)《效率较高》

      3、TreeMap : 底层是二叉树数据结构,线程不同步,可以用作Map集合中的建排序。


        Map集合与Set集合较为相似,原因是,Set集合 在底层多是调用的Map集合。

posted @ 2017-04-06 23:13  阿肯新  阅读(147)  评论(0编辑  收藏  举报