自顶向下理解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);// 映射表是否包含指定键的元素boolean containsValue(Object value);// 映射表是否包含指定值得元素映射表增删查改:增、改 ?V put(K key, V value) ?V putAll(Map? extends K, ? value V m)删V remove(Object key) ? void clear()查V get(Object key)V put(K key, V value)// 放入或替换指定key的键值对 V putAll(Map? extends K, ? value V m)// 将另一映射表所有元素放入本映射表V remo
显示全部