自顶向下理解Java集合框架Map接口资料.docx
文本预览下载声明
Map基本概念
数据结构中Map是一种重要的形式。Map接口定义的是查询表,或称查找表,其用于储存所谓的键/值对(key-value pair),其中key是映射表的索引。
JDK结构中还存在实现Map类似功能的遗留集合:
Hashtable(线程安全的散列映射表)
Properties(属性映射表),常用于配置文件(如perties)。
Map接口源代码
package java.util;
/* 映射表(查询表)泛型接口 */public interface MapK,V {
/* 基本与Collection相同,返回映射表中key-value映射对数量(内部属性size) */
int size();
/* 基本与Collection相同,返回映射表是否包含映射对 */
boolean isEmpty();
/* 返回映射表是否包含指定的键 */
boolean containsKey(Object key);
/* 返回映射表是否包含指定的值,或者说指定的值是否有大于等于1个映射的键 */
boolean containsValue(Object value);
/* 如果映射表中存在指定key,返回此key的值;否则,返回null */
V get(Object key);
/* 将键值对放入映射表中。 * 如果键存在,则用现在的值替换原有值,返回原有值对象; * 如果键不存在则存入键值对,返回null */ */
V put(K key, V value);
/* 移除指定键对应的值。如果存在键,则移除,并返回移除值对象;反之,则返回null */
V remove(Object key);
/* 复制另一张映射表元素到本映射表中 */
void putAll(Map? extends K, ? extends V m);
/* 基本同Collection,清空映射表 */
void clear();
/* 获得键的Set集合 */
SetK keySet();
/* 获得值的Collection集合 */
CollectionV values();
/* 获得键值对的Set集合 */
SetMap.EntryK, V entrySet();
/* 内部接口 EntryK,V */
interface EntryK,V {
/* 获取键值对的键 */
K getKey();
/* 获取键值对的值 */
V getValue();
/* 设置键值对的值 */
V setValue(V value);
/* 比较entry(键值对) */
boolean equals(Object o);
/* 生成entry对象的hash值 */
int hashCode();
}
/* 比较映射表 */
boolean equals(Object o);
/* 生成映射表对象的hash码*/
int hashCode();
}
深入理解码源
对象比较好基友:equals(Object obj)、hashcode()
MapK, V接口及其内部接口EntryK, V都有这俩方法。如此设计,目的就是规范其实现子类,要求子类必须重写Object类的这俩方法,从而完成映射表这种数据结构的既定思想。
boolean equals(Object o); // 对象比较
int hashCode(); // 哈希码
集合框架通用方法:size()、isEmpty()
集合框架(包括Collection接口及其子接口List、Set,Map接口)内部维护一个size属性,其描述用户提供可操纵元素数量,通过size()方法向用户提供可见性,通过isEmpty()方法向用户说明是否集合中仍存在其可操纵的元素。
int size(); // 元素保有量
boolean isEmpty(); // 元素数量是否为0
键、值存在性判断:containsKey(Object key)、containsValue(Object value)
boolean containsKey(Object key); // 映射表是否包含指定键的元素
b
显示全部