diff --git a/notes/Java 容器.md b/notes/Java 容器.md
index f660fa59..a9125742 100644
--- a/notes/Java 容器.md
+++ b/notes/Java 容器.md
@@ -45,7 +45,7 @@
- LinkedList:可以用它来支持双向队列;
-- PriorityQueue 是基于堆结构实现。
+- PriorityQueue 是基于堆结构实现,可以用它来实现优先级队列。
## Map
@@ -57,8 +57,6 @@
- TreeMap:基于红黑树实现。
-- ConcurrentHashMap:线程安全 Map,不涉及类似于 HashTable 的同步加锁。
-
## Java 1.0/1.1 容器
对于旧的容器,我们决不应该使用它们,只需要对它们进行了解。
@@ -71,9 +69,22 @@
## 迭代器模式
-从概览图可以看到,每个集合类都有一个 Iterator 对象,可以通过这个迭代器对象来遍历集合中的元素。
+
-[Java 中的迭代器模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#1-%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F)
+Collection 实现了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。
+
+从 JDK 5 之后可以使用 foreach 方法来遍历实现了 Iterable 接口的聚合对象。
+
+```java
+List list = new ArrayList<>();
+list.add("a");
+list.add("b");
+for (String item : list) {
+ System.out.println(item);
+}
+```
+
+> [迭代器模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%8D%81%E4%BA%8C%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F)
## 适配器模式
@@ -85,19 +96,51 @@ java.util.Arrays#asList() 可以把数组类型转换为 List 类型。
list = Arrays.asList(arr);
```
+> [适配器模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%8D%81%E9%80%82%E9%85%8D%E5%99%A8%E6%A8%A1%E5%BC%8F)
+
# 三、散列
-使用 hasCode() 来返回散列值,使用的是对象的地址。
+hasCode() 返回散列值,使用的是对象的地址。
而 equals() 是用来判断两个对象是否相等的,相等的两个对象散列值一定要相同,但是散列值相同的两个对象不一定相等。
相等必须满足以下五个性质:
-1. 自反性
-2. 对称性
-3. 传递性
-4. 一致性(多次调用 x.equals(y),结果不变)
-5. 对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false
+**1. 自反性**
+
+```java
+x.equals(x); // true
+```
+
+**2. 对称性**
+
+```java
+x.equals(y) == y.equals(x) // true
+```
+
+**3. 传递性**
+
+```java
+if x.equals(y) && y.equals(z) {
+ x.equals(z); // true;
+}
+```
+
+**4. 一致性**
+
+多次调用 equals() 方法结果不变
+
+```java
+x.equals(y) == x.equals(y) == x.equals(y) == x.equals(y); // true
+```
+
+**5. 与 null 的比较**
+
+对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false
+
+```java
+x.euqals(null); // false;
+```
# 四、源码分析
@@ -423,3 +466,4 @@ private V putForNullKey(V value) {
- Java 编程思想
- [Java Collection Framework](https://www.w3resource.com/java-tutorial/java-collections.php)
+- [Iterator 模式](https://openhome.cc/Gossip/DesignPattern/IteratorPattern.htm)
diff --git a/pics/Iterator-1.jpg b/pics/Iterator-1.jpg
new file mode 100644
index 00000000..f9f818c6
Binary files /dev/null and b/pics/Iterator-1.jpg differ