auto commit

This commit is contained in:
CyC2018 2018-03-23 21:31:09 +08:00
parent 237d88199b
commit 450c3f6d97
2 changed files with 55 additions and 11 deletions

View File

@ -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 对象,可以通过这个迭代器对象来遍历集合中的元素。
<div align="center"> <img src="../pics//Iterator-1.jpg"/> </div><br>
[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<String> 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)

BIN
pics/Iterator-1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB