Java容器学习笔记(三) Map接口及其重要实现类学习总结
在本文中如果您发现了错误,请您花费几分钟的时间给予指出,谢谢!!
本文主要总结Map接口及其重要实现类的用法。
三.Map接口
? Map中的每个成员方法由一个关键字(key)和一个值(value)构成。Map接口不直接继承于Collection接口,因为它包装的是一组成对的“键-值”对象的集合,而且在Map接口的集合中也不能有重复的key出现,因为每个键只能与一个成员元素相对应。
? Map接口的子接口以及主要实现类有:
子接口:Bindings、ConcurrentMap、ConcurrentNavigableMap、MessageContext、LogicMessageContext、NavigableMap、SOAPMessageMap、SortedMap
实现类:AbstractMap, Attributes, AuthProvider, ConcurrentHashMap, EnumMap,ConcurrentSkipListMap,HashMap, Hashtable, IdentityHashMap, LinkedHashMap, PrinterStateReasons,Properties, Provider, RenderingHints, SimpleBindings, TabularDataSupport,TreeMap, UIDefaults,WeakHashMap
Map接口中定义的方法清单:
? Map中定义的方法说明:
在Map接口中定义的通用方法并不是很多。
a) 添加和删除Map中的某个元素
? put(K, V) : 将给定的“键-值”对放入到给定的Map当中
? putAll(Map<? extends K, ? extends V) : 将指定的Map中的“键-值”对放入到给定的Map当中
? remove(Object key) : 从该集合中移除指定的对象,并返回对应的value
? clear() : 清空Map中的所有对象
b) 查询与Map有关的数据
? int size() : 返回此Map中“键-值”对的个数
? boolean isEmpty() : 判断此Map中“键-值”对的个数是否为0
? boolean containsKey(Object key) : 测试此Map中是否有该key
? boolean containsValue(Object value) : 测试此Map中是否包含该value
? V get(Object key) : 通过指定的key查询Map中对应的value
? Collection<Object value> values() : 取得Map中所有的value
? Set<Object key> keySet() : 取得当前Map中key的集合
? Set<Entry<K, V>> entrySet() : 取得当前Map中entry的集合
? HashMap的特点、实现机制及使用方法
a) HashMap的特点:
HashMap实现了Map、CloneMap、Serializable三个接口,并且继承自AbstractMap类。
b) HashMap的实现机制:
HashMap基于hash数组实现,若key的hash值相同则使用链表方式进行保存,详见HashSet中的说明。我引用网上一个名词叫“链表散列”来形容这样的数据结构。
新建一个HashMap时会初始化一个大小为16,负载因子为0.75的空的HashMap。
// Find a power of 2 >= initialCapacity int capacity = 1; while (capacity < initialCapacity) capacity <<= 1; …… table = new Entry[capacity];