概念
Map 集合类用于存储键值对,其中每个键映射到一个值。
常见的接口和方法
方法 | 功能 |
---|---|
get(Object key) | 返回与指定键关联的值 |
put(Object key, Object value) | 将指定值与指定键相关联 |
containsKey(Object key) 如果 Map | 包含指定键的映射,则返回 true |
containsValue(Object value) | 如果 Map 将一个或多个键映射到指定值,则返回 true |
keySet() | 返回 Map 的键 的 Set,可以用 foreach 语句遍历 |
··· | ··· |
Map 的基本实现
如果没有其他的限制,HashMap 应该成为你的默认选择,因为它对速度进行了优化,其他实现强调了其他的特性,因此都不如 HashMap 快。
实现 | 介绍 |
---|---|
HashMap | Map 基于散列表的实现(它取代了Hashtable)。插入和查询“键值对”的开销是固定的。可以通过构造器设置容量和负载因子,以调整容器的性能。 |
LinkedHashMap | 类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比 HashMap 慢一点,而在迭代访问时反而更快,因为它使用链表维护内部次序。 |
TreeMap | 基于红黑树的实现。查看“键”或“键值对”时,它们会被排序(次序由 cmparable 或 Comparator 决定)。TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一带有 subMap() 方法的 Map,它可以返回一个子树。 |
WeakHashMap | 弱键(weak key)映射,允许释放映射所指向的对象;这是为解决某类特殊问题而设计的。如果映射之外没有引用指向某个“键”,则此“键”可以被垃圾收集器回收。 |
ConcurrentHashMap | 一种线程安全的Map,它不涉及同步加锁。 |
IdentityHashMap | 使用 == 代替 equals() 对“键”进行比较的散列映射。专为解决特殊问题而设计的。 |