Most visited

Recently visited

Added in API level 1

EnumMap

public class EnumMap
extends AbstractMap<K extends Enum<K>, V> implements Serializable, Cloneable

java.lang.Object
   ↳ java.util.AbstractMap<K extends java.lang.Enum<K>, V>
     ↳ java.util.EnumMap<K extends java.lang.Enum<K>, V>


用于枚举类型键的专用Map实现。 枚举映射中的所有键必须来自单个枚举类型,该映射在创建映射时明确或隐含地指定。 枚举映射在内部表示为数组。 这种表示非常紧凑和高效。

枚举映射按键的自然顺序维护(枚举常量的声明顺序)。 这反映在由所述集合的视图(返回的迭代keySet()entrySet() ,和values() )。

由集合视图返回的迭代器是 弱一致的 :它们永远不会抛出 ConcurrentModificationException ,它们可能会或可能不会显示迭代过程中发生的对映射的任何修改的影响。

空键不被允许。 尝试插入空密钥将抛出NullPointerException 尝试测试是否存在空密钥或删除一个将会正常工作。 空值是允许的。

像大多数收集实现EnumMap不同步。 如果多个线程同时访问一个枚举映射,并且至少有一个线程修改映射,则它应该在外部同步。 这通常是通过同步某些自然封装枚举映射的对象来完成的。 如果不存在这样的对象,则应使用synchronizedMap(Map ) 方法“映射”地图。 这最好在创建时完成,以防止意外的非同步访问:

     Map<EnumKey, V> m
         = Collections.synchronizedMap(new EnumMap<EnumKey, V>(...));
 

实现注意事项:所有基本操作均在恒定时间内执行 他们很可能(虽然不能保证)比他们的HashMap同行更快。

本课是 Java Collections Framework的成员。

也可以看看:

Summary

Public constructors

EnumMap(Class<K> keyType)

用指定的键类型创建一个空的枚举映射。

EnumMap(EnumMap<K, ? extends V> m)

使用与指定的枚举映射相同的键类型创建枚举映射,最初包含相同的映射(如果有)。

EnumMap(Map<K, ? extends V> m)

创建从指定映射初始化的枚举映射。

Public methods

void clear()

从此映射中删除所有映射。

EnumMap<K, V> clone()

返回此枚举映射的浅表副本。

boolean containsKey(Object key)

如果此映射包含指定键的映射,则返回 true

boolean containsValue(Object value)

如果此映射将一个或多个键映射到指定值,则返回 true

Set<Entry<K, V>> entrySet()

返回此映射中映射的映射的 Set视图。

boolean equals(Object o)

将指定的对象与此映射进行比较以获得相等性。

V get(Object key)

返回指定键映射到的值,如果此映射不包含键映射,则返回 null

int hashCode()

返回此映射的哈希码值。

Set<K> keySet()

返回此映射中包含的键的 Set视图。

V put(K key, V value)

将指定的值与此映射中指定的键关联。

void putAll(Map<? extends K, ? extends V> m)

将指定地图中的所有映射复制到此地图。

V remove(Object key)

如果存在,则从该映射中移除该键的映射。

int size()

返回此映射中键 - 值映射的数量。

Collection<V> values()

返回此映射中包含的值的 Collection视图。

Inherited methods

From class java.util.AbstractMap
From class java.lang.Object
From interface java.util.Map

Public constructors

EnumMap

Added in API level 1
EnumMap (Class<K> keyType)

用指定的键类型创建一个空的枚举映射。

Parameters
keyType Class: the class object of the key type for this enum map
Throws
NullPointerException if keyType is null

EnumMap

Added in API level 1
EnumMap (EnumMap<K, ? extends V> m)

使用与指定的枚举映射相同的键类型创建枚举映射,最初包含相同的映射(如果有)。

Parameters
m EnumMap: the enum map from which to initialize this enum map
Throws
NullPointerException if m is null

EnumMap

Added in API level 1
EnumMap (Map<K, ? extends V> m)

创建从指定映射初始化的枚举映射。 如果指定的映射是EnumMap实例,则此构造函数的行为与EnumMap(EnumMap)行为相同。 否则,指定的映射必须至少包含一个映射(以确定新的枚举映射的键类型)。

Parameters
m Map: the map from which to initialize this enum map
Throws
IllegalArgumentException if m is not an EnumMap instance and contains no mappings
NullPointerException if m is null

Public methods

clear

Added in API level 1
void clear ()

从此映射中删除所有映射。

clone

Added in API level 1
EnumMap<K, V> clone ()

返回此枚举映射的浅表副本。 (这些值本身没有被克隆。

Returns
EnumMap<K, V> a shallow copy of this enum map

containsKey

Added in API level 1
boolean containsKey (Object key)

如果此映射包含指定键的映射,则返回 true

Parameters
key Object: the key whose presence in this map is to be tested
Returns
boolean true if this map contains a mapping for the specified key

containsValue

Added in API level 1
boolean containsValue (Object value)

如果此映射将一个或多个键映射到指定值,则返回 true

Parameters
value Object: the value whose presence in this map is to be tested
Returns
boolean true if this map maps one or more keys to this value

entrySet

Added in API level 1
Set<Entry<K, V>> entrySet ()

返回此映射中包含的映射的Set视图。 返回的集合遵守keySet()列出的总体合同。 该集合的迭代器将按照键的顺序返回映射,这是它们的自然顺序(声明枚举常量的顺序)。

Returns
Set<Entry<K, V>> a set view of the mappings contained in this enum map

equals

Added in API level 1
boolean equals (Object o)

将指定的对象与此映射进行比较以获得相等性。 如果给定的对象也是一个映射,并且这两个映射表示相同的映射,则返回true ,如equals(Object)合同中所述。

Parameters
o Object: the object to be compared for equality with this map
Returns
boolean true if the specified object is equal to this map

get

Added in API level 1
V get (Object key)

返回指定键映射到的值,如果此映射不包含键映射,则返回 null

更正式地说,如果该映射包含从键k到值v的映射(例如(key == k) ,则该方法返回v ; 否则返回null (最多可以有一个这样的映射。)

返回值null 不一定表示映射不包含该键的映射; 地图也可能明确将密钥映射到null containsKey操作可用于区分这两种情况。

Parameters
key Object: the key whose associated value is to be returned
Returns
V the value to which the specified key is mapped, or null if this map contains no mapping for the key

hashCode

Added in API level 1
int hashCode ()

返回此映射的哈希码值。 映射的散列码被定义为映射中每个条目的散列码的总和。

Returns
int the hash code value for this map

keySet

Added in API level 1
Set<K> keySet ()

返回此映射中包含的键的Set视图。 返还的集合服从keySet()概述的一般合同。 集合的迭代器将按照自然顺序返回键(枚举常量声明的顺序)。

Returns
Set<K> a set view of the keys contained in this enum map

put

Added in API level 1
V put (K key, 
                V value)

将指定的值与此映射中指定的键关联。 如果映射先前包含此键的映射,则旧值将被替换。

Parameters
key K: the key with which the specified value is to be associated
value V: the value to be associated with the specified key
Returns
V the previous value associated with specified key, or null if there was no mapping for key. (A null return can also indicate that the map previously associated null with the specified key.)
Throws
NullPointerException if the specified key is null

putAll

Added in API level 1
void putAll (Map<? extends K, ? extends V> m)

将指定地图中的所有映射复制到此地图。 这些映射将替换此映射对当前指定映射中的任何键的任何映射。

Parameters
m Map: the mappings to be stored in this map
Throws
NullPointerException the specified map is null, or if one or more keys in the specified map are null

remove

Added in API level 1
V remove (Object key)

如果存在,则从该映射中移除该键的映射。

Parameters
key Object: the key whose mapping is to be removed from the map
Returns
V the previous value associated with specified key, or null if there was no entry for key. (A null return can also indicate that the map previously associated null with the specified key.)

size

Added in API level 1
int size ()

返回此映射中键 - 值映射的数量。

Returns
int the number of key-value mappings in this map

values

Added in API level 1
Collection<V> values ()

返回此映射中包含的值的Collection视图。 退回的收款服从values()列出的一般合同。 集合的迭代器将按照它们相应的键在映射中出现的顺序返回值,这是它们的自然顺序(声明枚举常量的顺序)。

Returns
Collection<V> a collection view of the values contained in this map

Hooray!