Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f6b9439

Browse files
authored
🎨
1 parent a754384 commit f6b9439

File tree

1 file changed

+25
-40
lines changed

1 file changed

+25
-40
lines changed

‎ch16/00_Maps.md‎

Lines changed: 25 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,66 @@
11
《《《 [返回首页](../README.md) <br/>
22
《《《 [上一节](../ch15/03_Comparing_List_Implementations.md)
33

4-
## Maps
4+
### Maps
55

6-
`Map` 接口是主要集合框架接口中的最后一个,也是唯一不能从 `Collection` 继承的接口。 它定义了一组键值对关联所支持的操作,其中键是唯一的。 这些操作如图 `16-1` 所示,分为以下四组,大致平行于 `Collection-adding` 元素的四个操作组,删除元素,查询集合内容以及提供集合内容的不同视图。
6+
`Map` 接口是主要集合框架接口中的最后一个,也是唯一不能从 `Collection` 继承的接口。 它定义了一组键值对关联所支持的操作,其中键是唯一的。 这些操作如
7+
`16-1` 所示,分为以下四组,大致平行于 `Collection-adding` 元素的四个操作组,删除元素,查询集合内容以及提供集合内容的不同视图。
78

89
**添加关联**
910

1011
```java
11-
V put(K key, V value) // 如果密钥存在,则添加或替换键值关联返回旧值(可能为空); 否则返回null
12-
void putAll(Map<? extends K,? extends V> m) // 将提供的映射中的每个键值关联添加到接收器中
12+
V put(K key, V value) // 如果密钥存在,则添加或替换键值关联返回旧值(可能为空); 否则返回null
13+
void putAll(Map<? extends K,? extends V> m) // 将提供的映射中的每个键值关联添加到接收器中
1314
```
1415

1516
该组中的操作是可选的; 在不可修改的映射上调用它们将导致 `UnsupportedOperationException`
1617

1718
**删除关联**
1819

1920
```java
20-
void clear() // 从此地图中删除所有关联
21-
V remove(Object key) // 使用给定的密钥去除关联(如果有的话); 返回与其关联的值,或返回null
21+
void clear() // 从此地图中删除所有关联
22+
V remove(Object key) // 使用给定的密钥去除关联(如果有的话); 返回与其关联的值,或返回null
2223
```
2324

24-
`Map.remove` 的签名与 `Collection.remove` 的签名相似(请参阅第 `12.1` 节),因为它采用 `Object` 类型的参数而不是泛型类型。 我们讨论过了 `2.6` 节中的这个设计的替代方案。
25+
`Map.remove` 的签名与 `Collection.remove` 的签名相似(请参阅第 `12.1` 节),因为它采用 `Object` 类型的参数而不是泛型类型。 我们讨论过了 `2.6`
26+
中的这个设计的替代方案。
2527

2628
像前一组的添加操作一样,这些删除操作是可选的。
2729

2830
**查询 Map 的内容**
2931

3032
```java
31-
V get(Object k) // 返回对应于k的值;如果k不存在,则返回null
32-
boolean containsKey(Object k) // 如果k作为键存在,则返回true
33-
boolean containsValue(Object v) // 如果v作为值存在,则返回true
34-
int size() // 返回关联的数量
35-
boolean isEmpty() // 如果没有关联,则返回true
33+
V get(Object k) // 返回对应于k的值;如果k不存在,则返回null
34+
boolean containsKey(Object k) // 如果k作为键存在,则返回true
35+
boolean containsValue(Object v) // 如果v作为值存在,则返回true
36+
int size() // 返回关联的数量
37+
boolean isEmpty() // 如果没有关联,则返回true
3638
```
3739

3840
![](16_1.png)
3941

4042
`16-1` `Map`
4143

42-
对于允许空键或值(分别)的 `Map` 实现,`containsKey``containsValue` 的参数可能为 `null`。 如果为这些方法提供了 `null` 参数,则不允许为 `null` 的实现将抛出 `NullPointerException`
44+
对于允许空键或值(分别)的 `Map` 实现,`containsKey``containsValue` 的参数可能为 `null`。 如果为这些方法提供了 `null` 参数,则不允许为
45+
`null` 的实现将抛出 `NullPointerException`
4346

4447
`Collection``size` 方法一样,可以报告的最大元素数量是 `Integer.MAX_VALUE`
4548

4649
提供键,值或关联的集合视图:
4750

4851
```java
49-
Set<Map.Entry<K, V>> entrySet() // 返回关联的Set视图
50-
Set<K> keySet() // 返回键的Set视图
51-
Collection<V> values() // 返回值的集合视图
52+
Set<Map.Entry<K, V>> entrySet() // 返回关联的Set视图
53+
Set<K> keySet() // 返回键的Set视图
54+
Collection<V> values() // 返回值的集合视图
5255
```
5356

54-
这些方法返回的集合由地图支持,因此对地图的任何更改都会反映在地图本身中,反之亦然。事实上,通过视图只能进行有限的更改:可以直接或通过视图上的迭代器删除元素,但不能添加元素;如果你尝试,你会得到一个 `UnsupportedOperationException`。删除键可删除单个相应的键值关联;另一方面,删除值只会删除映射到其中的一个关联;该值可能仍然作为与不同密钥关联的一部分存在。如果支持地图被同时修改,则视图上的迭代器将变为未定义。
57+
这些方法返回的集合由地图支持,因此对地图的任何更改都会反映在地图本身中,反之亦然。事实上,通过视图只能进行有限的更改:可以直接或通过视图上的迭代器删
58+
除元素,但不能添加元素;如果你尝试,你会得到一个 `UnsupportedOperationException`。删除键可删除单个相应的键值关联;另一方面,删除值只会删除映射到其中
59+
的一个关联;该值可能仍然作为与不同密钥关联的一部分存在。如果支持地图被同时修改,则视图上的迭代器将变为未定义。
5560

56-
`entrySet` 返回的集合的成员实现了接口 `Map.Entry`,它表示键值关联并提供了一个 `setValue` 方法,可用于更改备份映射中的值。`Map.Entry` 的文档在指定实现接口的对象时只能在通过 `entrySet` 调用产生的视图迭代期间创建,并且如果在此迭代过程中修改了支持映射,则这些对象变为无效。在 `Java 6` 中,创建 `Map.Entry` 对象的这种限制性方案不够充分,因为它是 `NavigableMap` 的许多方法的返回类型(请参见第 `16.3` 节)。
61+
`entrySet` 返回的集合的成员实现了接口 `Map.Entry`,它表示键值关联并提供了一个 `setValue` 方法,可用于更改备份映射中的值。`Map.Entry` 的文档在指定
62+
实现接口的对象时只能在通过 `entrySet` 调用产生的视图迭代期间创建,并且如果在此迭代过程中修改了支持映射,则这些对象变为无效。在 `Java 6` 中,创建
63+
`Map.Entry` 对象的这种限制性方案不够充分,因为它是 `NavigableMap` 的许多方法的返回类型(请参见第 `16.3` 节)。
5764

5865
《《《 [下一节](01_Using_the_Methods_of_Map.md) <br/>
5966
《《《 [返回首页](../README.md)
60-
61-
62-
63-
64-
65-
66-
67-
68-
69-
70-
71-
72-
73-
74-
75-
76-
77-
78-
79-
80-
81-

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /