设为首页 加入收藏

TOP

介绍一下JAVA中的Map接口(一)
2014-11-23 23:35:24 来源: 作者: 【 】 浏览:6
Tags:介绍 JAVA Map 接口

Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。该接口描述了从不重复的键到值的映射。



(1) 添加、删除操作:


Object put(Object key, Object value): 将互相关联的一个关键字与一个值放入该映像。如果该关键字已经存在,那么与此关键字相关的新值将取代旧值。方法返回关键字的旧值,如果关键字原先并不存在,则返回null


Object remove(Object key): 从映像中删除与key相关的映射


void putAll(Map t): 将来自特定映像的所有元素添加给该映像


void clear(): 从映像中删除所有映射


“键和值都可以为null。但是,您不能把Map作为一个键或值添加给自身。”


(2) 查询操作:


Object get(Object key): 获得与关键字key相关的值,并且返回与关键字key相关的对象,如果没有在该映像中找到该关键字,则返回null


boolean containsKey(Object key): 判断映像中是否存在关键字key


boolean containsValue(Object value): 判断映像中是否存在值value


int size(): 返回当前映像中映射的数量


boolean isEmpty() :判断映像中是否有任何映射


(3) 视图操作 :处理映像中键/值对组


Set keySet(): 返回映像中所有关键字的视图集


“因为映射中键的集合必须是唯一的,您用Set支持。你还可以从视图中删除元素,同时,关键字和它相关的值将从源映像中被删除,但是你不能添加任何元素。”


Collection values():返回映像中所有值的视图集


“因为映射中值的集合不是唯一的,您用Collection支持。你还可以从视图中删除元素,同时,值和它的关键字将从源映像中被删除,但是你不能添加任何元素。”


Set entrySet(): 返回Map.Entry对象的视图集,即映像中的关键字/值对


“因为映射是唯一的,您用Set支持。你还可以从视图中删除元素,同时,这些元素将从源映像中被删除,但是你不能添加任何元素。”


4.1. Map.Entry接口


Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。



通过这个集合的迭代器,您可以获得每一个条目(唯一获取方式)的键或值并对值进行更改。当条目通过迭代器返回后,除非是迭代器自身的remove()方法或者迭代器返回的条目的setValue()方法,其余对源Map外部的修改都会导致此条目集变得无效,同时产生条目行为未定义。


(1) Object getKey(): 返回条目的关键字


(2) Object getValue(): 返回条目的值


(3) Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值


4.2. SortedMap接口


“集合框架”提供了个特殊的Map接口:SortedMap,它用来保持键的有序顺序。



SortedMap接口为映像的视图(子集),包括两个端点提供了访问方法。除了排序是作用于映射的键以外,处理SortedMap和处理SortedSet一样。


添加到SortedMap实现类的元素必须实现Comparable接口,否则您必须给它的构造函数提供一个Comparator接口的实现。TreeMap类是它的唯一一份实现。


“因为对于映射来说,每个键只能对应一个值,如果在添加一个键/值对时比较两个键产生了0返回值(通过Comparable的compareTo()方法或通过Comparator的compare()方法),那么,原始键对应值被新的值替代。如果两个元素相等,那还好。但如果不相等,那么您就应该修改比较方法,让比较方法和 equals() 的效果一致。”


(1) Comparator comparator(): 返回对关键字进行排序时使用的比较器,如果使用Comparable接口的compareTo()方法对关键字进行比较,则返回null


(2) Object firstKey(): 返回映像中第一个(最低)关键字


(3) Object lastKey(): 返回映像中最后一个(最高)关键字


(4) SortedMap subMap(Object fromKey, Object toKey): 返回从fromKey(包括)至toKey(不包括)范围内元素的SortedMap视图(子集)


(5) SortedMap headMap(Object toKey): 返回SortedMap的一个视图,其内各元素的key皆小于toKey


(6) SortedSet tailMap(Object fromKey): 返回SortedMap的一个视图,其内各元素的key皆大于或等于fromKey


4.3. AbstractMap抽象类


和其它抽象集合实现相似,AbstractMap 类覆盖了equals()和hashCode()方法以确保两个相等映射返回相同的哈希码。如果两个映射大小相等、包含同样的键且每个键在这两个映射中对应的值都相同,则这两个映射相等。映射的哈希码是映射元素哈希码的总和,其中每个元素是Map.Entry接口的一个实现。因此,不论映射内部顺序如何,两个相等映射会报告相同的哈希码。


4.4. HashMap类和TreeMap类


“集合框架”提供两种常规的Map实现:HashMap和TreeMap (TreeMap实现SortedMap接口)。在Map 中插入、删除和定位元素,HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。使用HashMap要求添加的键类明确定义了hashCode()和equals()的实现。


这个TreeMap没有调优选项,因为该树总处于平衡状态。


4.4.1. HashMap类


为了优化HashMap空间的使用,您可以调优初始容量和负载因子。


(1) HashMap(): 构建一个空的哈希映像


(2) HashMap(Map m): 构建一个哈希映像,并且添加映像m的所有映射


(3) HashMap(int initialCapacity): 构建一个拥有特定容量的空的哈希映像


(4) HashMap(int initialCapacity, float loadFactor): 构建一个拥有特定容量和加载因子的空的哈希映像


4.4.2. TreeMap类


TreeMap没有调优选项,因为该树总处于平衡状态。


(1) TreeMap():构建一个空的映像树


(2) TreeMap(Map m): 构建一个映像树,并且添加映像m中所有元素


(3) TreeMap(Comparator c): 构建一个映像树,并且使用特定的比较器对关键字进行排序


(4) TreeMap(SortedMap s): 构建一个映像树,添加映像树s中所有映射,并且使用与有序映像s相同的比较器排序


4.5. LinkedHashMap类


LinkedHashMap扩展HashMap,以插入顺序将关键字/值对添加进链接哈希映像中。象LinkedHashSet一样,LinkedHashMap内部也采用双重链接式列表。


(1) LinkedHashMap(): 构建一个空链接哈希映像


(2) LinkedHashMap(Map m): 构建一个链接哈

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇软件测试面试题:How do you anal.. 下一篇请简要说明WEB测试应注意的问题?

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: