|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.util.AbstractMap<K,V>
K - 此映射维护的键的类型V - 映射值的类型public abstract class AbstractMap<K,V>
此类提供 Map 接口的骨干实现,以最大限度地减少实现此接口所需的工作。
要实现不可修改的映射,编程人员只需扩展此类并提供 entrySet 方法的实现即可,该方法将返回映射的映射关系 set 视图。通常,返回的 set 将依次在 AbstractSet 上实现。此 set 不支持 add 或 remove 方法,其迭代器也不支持 remove 方法。
要实现可修改的映射,编程人员必须另外重写此类的 put 方法(否则将抛出 UnsupportedOperationException),entrySet().iterator() 返回的迭代器也必须另外实现其 remove 方法。
按照 Map 接口规范中的建议,编程人员通常应该提供一个 void(无参数)构造方法和 map 构造方法。
此类中每个非抽象方法的文档详细描述了其实现。如果要实现的映射允许更有效的实现,则可以重写所有这些方法。
此类是 Java Collections Framework 的成员。
Map,
Collection| 嵌套类摘要 | |
|---|---|
static class |
AbstractMap.SimpleEntry<K,V>
维护键和值的 Entry。 |
static class |
AbstractMap.SimpleImmutableEntry<K,V>
维护不可变的键和值的 Entry。 |
| 从接口 java.util.Map 继承的嵌套类/接口 |
|---|
Map.Entry<K,V> |
| 构造方法摘要 | |
|---|---|
protected |
AbstractMap()
唯一的构造方法。 |
| 方法摘要 | |
|---|---|
void |
clear()
从此映射中移除所有映射关系(可选操作)。 |
protected Object |
clone()
返回此 AbstractMap 实例的浅表副本:不复制键和值本身。 |
boolean |
containsKey(Object key)
如果此映射包含指定键的映射关系,则返回 true。 |
boolean |
containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回 true。 |
abstract Set<Map.Entry<K,V>> |
entrySet()
返回此映射中包含的映射关系的 Set 视图。 |
boolean |
equals(Object o)
比较指定对象与此映射的相等性。 |
V |
get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。 |
int |
hashCode()
返回此映射的哈希码值。 |
boolean |
isEmpty()
如果此映射未包含键-值映射关系,则返回 true。 |
Set<K> |
keySet()
返回此映射中包含的键的 Set 视图。 |
V |
put(K key,
V value)
将指定的值与此映射中的指定键关联(可选操作)。 |
void |
putAll(Map<? extends K,? extends V> m)
从指定映射中将所有映射关系复制到此映射中(可选操作)。 |
V |
remove(Object key)
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。 |
int |
size()
返回此映射中的键-值映射关系数。 |
String |
toString()
返回此映射的字符串表示形式。 |
Collection<V> |
values()
返回此映射中包含的值的 Collection 视图。 |
| 从类 java.lang.Object 继承的方法 |
|---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
| 构造方法详细信息 |
|---|
protected AbstractMap()
| 方法详细信息 |
|---|
public int size()
此实现返回 entrySet().size()。
Map<K,V> 中的 sizepublic boolean isEmpty()
此实现返回 size() == 0。
Map<K,V> 中的 isEmptypublic boolean containsValue(Object value)
此实现在 entrySet() 上进行迭代,以搜索带有指定值的条目。如果找到这样的条目,则返回 true。如果迭代终止,并且没有找到这样的条目,则返回 false。注意,此实现所需的时间与映射的大小呈线性关系。
Map<K,V> 中的 containsValuevalue - 测试是否存在于此映射中的值
ClassCastException - 如果该值对于此映射是不合适的类型(可选)
NullPointerException - 如果指定值为 null 并且此映射不允许 null 值(可选)public boolean containsKey(Object key)
此实现在 entrySet() 上进行迭代,以搜索带有指定键的条目。如果找到这样的条目,则返回 true。如果迭代终止,并且没有找到这样的条目,则返回 false。注意,此实现所需的时间与映射的大小呈线性关系;许多实现将重写此方法。
Map<K,V> 中的 containsKeykey - 测试是否存在于此映射中的键
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)public V get(Object key)
null。
更确切地讲,如果此映射包含满足 (key==null ? k==null :
key.equals(k)) 的键 k 到值 v 的映射关系,则此方法返回 v;否则返回 null。(最多只能有一个这样的映射关系)。
如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。使用 containsKey 操作可区分这两种情况。
此实现在 entrySet() 上进行迭代,以搜索带有指定键的条目。如果找到这样的条目,则返回该条目的值。如果迭代终止,并且没有找到这样的条目,则返回 null。注意,此实现所需的时间与映射的大小呈线性关系;许多实现将重写此方法。
Map<K,V> 中的 getkey - 要返回其关联值的键
null
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)
public V put(K key,
V value)
m.containsKey(k) 返回 true 时,才能说映射 m 包含键 k 的映射关系)。
此实现始终抛出 UnsupportedOperationException。
Map<K,V> 中的 putkey - 与指定值关联的键value - 与指定键关联的值
UnsupportedOperationException - 如果此映射不支持 put 操作
ClassCastException - 如果指定键或值的类不允许将其存储在此映射中
NullPointerException - 如果指定键或值为 null,并且此映射不允许 null 键或值
IllegalArgumentException - 如果指定键或值的某些属性不允许将其存储在此映射中public V remove(Object key)
(key==null ? k==null :key.equals(k)) 的键 k 到值 v 的映射关系,则移除该映射关系。(该映射最多只能包含一个这样的映射关系。)
返回此映射中以前关联该键的值,如果此映射不包含该键的映射关系,则返回 null。
如果此映射允许 null 值,则返回 null 值并不一定 表示该映射不包含该键的映射关系;也可能该映射将该键显示地映射到 null。
调用返回后,此映射将不再包含指定键的映射关系。
此实现在 entrySet() 上进行迭代,以搜索带有指定键的条目。如果找到这样的条目,则通过 getValue 操作获取该条目的值,然后使用迭代器的 remove 操作从 collection(以及底层实现映射)中移除该条目,并返回保存的值。如果迭代终止,并且没有找到这样的条目,则返回 null。注意,此实现所需的时间与映射大小呈线性关系;许多实现将重写此方法。
注意,如果 entrySet 迭代器不支持 remove 方法,并且此映射包含指定键的映射关系,则此实现将抛出 UnsupportedOperationException。
Map<K,V> 中的 removekey - 从映射中移除其映射关系的键
UnsupportedOperationException - 如果此映射不支持 remove 操作
ClassCastException - 如果该键对于此映射是不合适的类型(可选)
NullPointerException - 如果指定键为 null 并且此映射不允许 null 键(可选)public void putAll(Map<? extends K,? extends V> m)
put(k, v)。如果正在进行此操作的同时修改了指定的映射,则此操作的行为是不确定的。
此实现在指定映射的 entrySet() collection 上进行迭代,并对迭代返回的每个条目调用一次此映射的 put 操作。
注意,如果此映射不支持 put 操作,并且指定映射为非空,则此实现将抛出 UnsupportedOperationException。
Map<K,V> 中的 putAllm - 要存储在此映射中的映射关系
UnsupportedOperationException - 如果此映射不支持 putAll 操作
ClassCastException - 如果指定映射中的键或值的类不允许将其存储在此映射中
NullPointerException - 如果指定映射为 null,或者此映射不允许 null 键或值,并且指定的映射包含 null 键或值
IllegalArgumentException - 如果指定映射中的键或值的某些属性不允许将其存储在此映射中public void clear()
此实现调用 entrySet().clear()。
注意,如果 entrySet 不支持 clear 操作,则此实现将抛出 UnsupportedOperationException。
Map<K,V> 中的 clearUnsupportedOperationException - 如果此映射不支持 clear 操作public Set<K> keySet()
Set 视图。该 set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。set 支持元素移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
此实现返回一个子类化 AbstractSet 的 set。子类的 iterator 方法通过此映射的 entrySet() 迭代器返回一个“包装器对象”。size 方法委托给此映射的 size 方法,contains 方法委托给此映射的 containsKey 方法。
set 是在第一次调用此方法时创建的,并为响应所有后续调用而返回。 因为不执行同步操作,所以对此方法的多个调用几乎总是返回相同的 set。
Map<K,V> 中的 keySetpublic Collection<V> values()
Collection 视图。该 collection 受映射支持,所以对映射的更改可在此 collection 中反映出来,反之亦然。如果对该 collection 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作除外),则迭代结果是不确定的。collection 支持元素移除,通过 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作可从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
此实现返回一个子类化 AbstractCollection 的 collection。子类的 iterator 方法通过此映射的 entrySet() 迭代器返回一个“包装器对象”。size 方法委托给此映射的 size 方法,contains 方法委托给此映射的 containsValue 方法。
collection 是在第一次调用此方法时创建的,并为响应所有后续调用而返回。因为不执行同步操作,所以对此方法的多个调用几乎总是返回相同的 collection。
Map<K,V> 中的 valuespublic abstract Set<Map.Entry<K,V>> entrySet()
Map 复制的描述Set 视图。该 set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作,或者通过对迭代器返回的映射项执行 setValue 操作除外),则迭代结果是不确定的。set 支持元素移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
Map<K,V> 中的 entrySetpublic boolean equals(Object o)
此实现首先检查指定的对象是否为此映射;如果是,则返回 true。然后,它将检查指定的对象是否是一个大小与此映射相等的映射;如果不是,则返回 false。如果是,则在此映射的 entrySet collection 上进行迭代,并检查指定的映射是否包含此映射所包含的每个映射关系。如果指定的映射中不包含这样的映射关系,则返回 false。如果迭代完成,则返回 true。
Map<K,V> 中的 equalsObject 中的 equalso - 要与此映射进行相等性比较的对象
Object.hashCode(),
Hashtablepublic int hashCode()
Object.hashCode() 的常规协定所要求的。
此实现在 entrySet() 上进行迭代,对 set 中的每个元素(条目)调用 hashCode(),并合计结果。
Map<K,V> 中的 hashCodeObject 中的 hashCodeMap.Entry.hashCode(),
Object.equals(Object),
Set.equals(Object)public String toString()
String.valueOf(Object) 转换为字符串。
Object 中的 toString
protected Object clone()
throws CloneNotSupportedException
Object 中的 cloneCloneNotSupportedException - 如果对象的类不支持 Cloneable 接口,则重写 clone 方法的子类也会抛出此异常,以指示无法复制某个实例。Cloneable
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
版权所有 2008 Sun Microsystems, Inc. 保留所有权利。请遵守GNU General Public License, version 2 only。