Map

Map(映射)

1)AbstractMap是抽象类,实现了Map中以下方法:

public int size()

  Map中定义了一个entrySet方法,返回的是Map.Entry的Set集合,直接调用Set集合的size方法即是Map的大小。

public boolean isEmpty()

  调用上面的size方法,等于0即为空。

public boolean containsKey(Object key)

  这个方法通过调用entrySet方法获取Set集合的迭代器遍历Map.Entry(在Map接口中其内部定义了一个Entry接口,这个接口是Map映射的内部实现用于维护一个key-value键值对,key-value存储在这个Map.Entry中),与参数key比较。Map可以存储为null的key值,由于key=null在Map中存储比较特殊(不能计算hashCode值),所以在这里也做了判断参数key是否为空。

public boolean containsValue(Object value)

  contains()方法用于判断集合中包不包含某个元素,所以这个方法实现和containsKey一致。

public V get(Object key)

  这个方法根据key返回value值。

public V put(K key, V value)

  向Map中存入key-value键值对。

public V remove(Object key)

  通过参数key删除Map中指定的key-value键值对。这个方法也很简单,也是通过迭代器遍历Map.Entry的Set集合,找到对应key值,通过调用Iterator的remove()方法删除Map.Entry。

public void putAll(Map<? extends K, ? extends V> m)

  这个方法也很简单遍历传入的Map,调用put方法存入就可以了。

public void clear()

  调用entrySet方法获取Set集合再调用Set的clear()方法清空。

public Set<K> keySet()

  返回Map key值的Set集合。将map中所有的键存入到Set集合,因为set具备迭代器,所有迭代方式取出所有的键再根据get()方法  ,获取每一个键对应的值。

2)sortedMap,存储有序的键值对

3)NavigableMap提供了针对给定搜索目标返回最接近匹配项的导航方法

NavigableSet扩展了 SortedSet,具有了为给定搜索目标报告最接近匹配项的导航方法。方法 lower、floor、ceiling 和 higher 分别返回小于、小于等于、大于等于、大于给定元素的元素,如果不存在这样的元素,则返回 null。类似地,方法 lowerKey、floorKey、ceilingKey 和 higherKey 只返回关联的键。

4)TreeMap存储有序的键值对,提供导航方法

TreeMap是基于红黑树(这是一种具有平衡二叉树特性的优秀的二叉查找树)实现的,它继承于AbstractMap,实现了NavigableMap接口,实现了Cloneable接口,还实现了java.io.Serializable接口,意味着它支持序列化。TreeMap是非同步的。 它的iterator 方法返回的迭代器是fail-fast(当多个线程对Collection进行操作时,如其中一个线程通过iterator进行遍历,该Collection的内容被其他线程进行修改,则产生fail-fast事件)的。

5)HashMap存储键值对,无序

6)HashTable存储键值对,无序,线程安全,父类和HashMap不一样,可以枚举遍历

 HashTable采用"拉链法"实现哈希表,它定义了几个重要的参数:table、count、threshold、loadFactor、modCount。

   table:为一个Entry[]数组类型,Entry代表了“拉链”的节点,每一个Entry代表了一个键值对,哈希表的"key-value键值对"都是存储在Entry数组中的。

   count:HashTable的大小,这个大小并不是HashTable的容器大小,而是他所包含Entry键值对的数量。

   threshold:Hashtable的阈值,用于判断是否需要调整Hashtable的容量。threshold的值="容量*加载因子"。

   loadFactor:加载因子。

   modCount:用来实现“fail-fast”机制的

7)Drectionary抽象类(已经废弃)

Dictionary类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。在任何一个 Dictionary 对象中,每个键至多与一个值相关联。Map是"key-value键值对"接口。

8)WeakHashMap类键是弱键: 只继承于AbstractMap类

它的键的类型是弱引用。

弱引用:即使没有显示的添加或者删除任何元素也也可能发生下列情况:
(1) 调用两次size()方法返回不同的值。
(2) 两次调用isEmpty()方法,第一次返回false,第二次返回true
(3) 两次调用containsKey()方法,第一次返回true第二次,第二次返回,尽管两次使用的是同一个key.
(4) 两次调用get()方法的,第一次返回value,第二次返回null,尽管两次使用的是同一个对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值