auto commit
This commit is contained in:
140
notes/Java 容器.md
140
notes/Java 容器.md
@ -1,78 +1,78 @@
|
||||
<!-- GFM-TOC -->
|
||||
* [<EFBFBD><EFBFBD><EFBFBD><EFBFBD>](#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
* [????](#????)
|
||||
* [1. List](#1-list)
|
||||
* [2. Set](#2-set)
|
||||
* [3. Queue](#3-queue)
|
||||
* [4. Map](#4-map)
|
||||
* [5. Java 1.0/1.1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>](#5-java-1011-<EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
* [<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ](#<23><><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ģʽ)
|
||||
* [1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ](#1-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ)
|
||||
* [2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ](#2-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ)
|
||||
* [ɢ<EFBFBD><EFBFBD>](#ɢ<EFBFBD><EFBFBD>)
|
||||
* [Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](#Դ<><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
* [5. Java 1.0/1.1 ????](#5-java-1011-????)
|
||||
* [?????<3F><>??????](#?????<3F><>??????)
|
||||
* [1. ????????](#1-????????)
|
||||
* [2. ????????](#2-????????)
|
||||
* [???](#???)
|
||||
* [??????](#??????)
|
||||
* [1. ArraList](#1-arralist)
|
||||
* [2. Vector <EFBFBD><EFBFBD> Stack](#2-vector-<EFBFBD><EFBFBD>-stack)
|
||||
* [2. Vector ?? Stack](#2-vector-??-stack)
|
||||
* [3. LinkedList](#3-linkedlist)
|
||||
* [4. TreeMap](#4-treemap)
|
||||
* [5. HashMap](#5-hashmap)
|
||||
* [6. LinkedHashMap](#6-linkedhashmap)
|
||||
* [7. ConcurrentHashMap](#7-concurrenthashmap)
|
||||
* [<EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>](#<23>ο<EFBFBD><CEBF><EFBFBD><EFBFBD><EFBFBD>)
|
||||
* [?<3F><>?????](#?<3F><>?????)
|
||||
<!-- GFM-TOC -->
|
||||
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
# ????
|
||||
|
||||

|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> Collection <EFBFBD><EFBFBD> Map <EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>Collection <EFBFBD>ְ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> List<EFBFBD><EFBFBD>Set <EFBFBD>Լ<EFBFBD> Queue<EFBFBD><EFBFBD>
|
||||
??????????? Collection ?? Map ?????Collection ??????? List??Set ??? Queue??
|
||||
|
||||
## 1. List
|
||||
|
||||
- ArrayList<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>
|
||||
- ArrayList???????????????????????????
|
||||
|
||||
- LinkedList<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD>ֻ<EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD>ٵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>Ԫ<EFBFBD>ء<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD>LinkedList <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>˫<EFBFBD>˶<EFBFBD><CBB6>С<EFBFBD>
|
||||
- LinkedList????????????????????????????????????????????????<3F><>????????????????????LinkedList ????????????????<3F><>??????<3F><>?
|
||||
|
||||
## 2. Set
|
||||
|
||||
- HashSet<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Hash ʵ<>֣<EFBFBD>֧<EFBFBD>ֿ<EFBFBD><D6BF>ٲ<EFBFBD><D9B2>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD>ʧȥ<CAA7><C8A5><EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD>
|
||||
- HashSet?????? Hash ???????????????????????????
|
||||
|
||||
- TreeSet<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ʲ<EFBFBD><EFBFBD><EFBFBD> HashSet<EFBFBD><EFBFBD>
|
||||
- TreeSet????????????????????????????<3F><>????? HashSet??
|
||||
|
||||
- LinkedListHashSet<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HashSet <EFBFBD>IJ<EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD>Ԫ<EFBFBD>صIJ<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˾<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԡ<EFBFBD>
|
||||
- LinkedListHashSet?????? HashSet ?????<3F><>?????????????????????????????????????????
|
||||
|
||||
## 3. Queue
|
||||
|
||||
ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD>LinkedList <EFBFBD><EFBFBD> PriorityQueue<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LinkedList ֧<EFBFBD><EFBFBD>˫<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>PriorityQueue <EFBFBD>ǻ<EFBFBD><EFBFBD>ڶѽṹʵ<EFBFBD>֡<EFBFBD>
|
||||
???????????LinkedList ?? PriorityQueue?????? LinkedList ????????<3F><>?PriorityQueue ???????????
|
||||
|
||||
## 4. Map
|
||||
|
||||
- HashMap<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Hash ʵ<EFBFBD><EFBFBD>
|
||||
- HashMap?????? Hash ???
|
||||
|
||||
- LinkedHashMap<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>LRU<EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>
|
||||
- LinkedHashMap??????????????????????????????????????????????LRU?????
|
||||
|
||||
- TreeMap<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD>
|
||||
- TreeMap?????????????
|
||||
|
||||
- ConcurrentHashMap<EFBFBD><EFBFBD><EFBFBD>̰߳<EFBFBD>ȫ Map<61><70><EFBFBD><EFBFBD><EFBFBD>漰<EFBFBD><E6BCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HashTable <EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
- ConcurrentHashMap??????? Map?????<3F>p?????? HashTable ?????????
|
||||
|
||||
## 5. Java 1.0/1.1 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
## 5. Java 1.0/1.1 ????
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>ھɵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǿ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD>ֻ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽⡣
|
||||
??????????????????????????????????????????????
|
||||
|
||||
- Vector<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ArrayList <EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̰߳<EFBFBD>ȫ<EFBFBD><EFBFBD>
|
||||
- Vector???? ArrayList ??????????????????
|
||||
|
||||
- HashTable<EFBFBD><EFBFBD><EFBFBD><EFBFBD> HashMap <EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̰߳<EFBFBD>ȫ<EFBFBD><EFBFBD>
|
||||
- HashTable???? HashMap ??????????????????
|
||||
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
# ?????<3F><>??????
|
||||
|
||||
## 1. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
## 1. ????????
|
||||
|
||||
<EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD> Iterator <20><><EFBFBD><EFBFBD><F3A3ACBF><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>Ԫ<EFBFBD>ء<EFBFBD>
|
||||
????????????????????????????? Iterator ??????????????????????????????????<3F><>?????
|
||||
|
||||
[Java <EFBFBD>еĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ ](https://github.com/CyC2018/InterviewNotes/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#92-java-%E5%86%85%E7%BD%AE%E7%9A%84%E8%BF%AD%E4%BB%A3%E5%99%A8)
|
||||
[Java ?<3F><>???????? ](https://github.com/CyC2018/InterviewNotes/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#92-java-%E5%86%85%E7%BD%AE%E7%9A%84%E8%BF%AD%E4%BB%A3%E5%99%A8)
|
||||
|
||||
## 2. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
## 2. ????????
|
||||
|
||||
java.util.Arrays#asList() <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊ List <EFBFBD><EFBFBD><EFBFBD>͡<EFBFBD>
|
||||
java.util.Arrays#asList() ????????????????? List ?????
|
||||
|
||||
```java
|
||||
List list = Arrays.asList(1, 2, 3);
|
||||
@ -80,44 +80,44 @@ java.util.Arrays#asList()
|
||||
list = Arrays.asList(arr);
|
||||
```
|
||||
|
||||
# ɢ<EFBFBD><EFBFBD>
|
||||
# ???
|
||||
|
||||
ʹ<EFBFBD><EFBFBD> hasCode() <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><EFBFBD>Ƕ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ַ<EFBFBD><EFBFBD>
|
||||
??? hasCode() ??????????????????????????
|
||||
|
||||
<EFBFBD><EFBFBD> equals() <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD><EFBFBD>ֵһ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɢ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD>
|
||||
?? equals() ???????<3F><>??????????????????????????????????????????????????????????????????????
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>
|
||||
??????????????????????
|
||||
|
||||
1. <EFBFBD>Է<EFBFBD><EFBFBD><EFBFBD>
|
||||
2. <EFBFBD>Գ<EFBFBD><EFBFBD><EFBFBD>
|
||||
3. <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
4. һ<EFBFBD><EFBFBD><EFBFBD>ԣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD> x.equals(y)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>䣩
|
||||
5. <EFBFBD><EFBFBD><EFBFBD>κβ<EFBFBD><EFBFBD><EFBFBD> null <20>Ķ<EFBFBD><C4B6><EFBFBD> x <20><><EFBFBD><EFBFBD> x.equals(nul) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ false
|
||||
1. ?????
|
||||
2. ?????
|
||||
3. ??????
|
||||
4. ????????<3F><>??? x.equals(y)?????????
|
||||
5. ???<3F>ʦ<EFBFBD>??? null ????? x ???? x.equals(nul) ?????? false
|
||||
|
||||
# Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
# ??????
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD> [ <EFBFBD>㷨 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ](https://github.com/CyC2018/InterviewNotes/blob/master/notes/%E7%AE%97%E6%B3%95.md#%E7%AC%AC%E4%B8%89%E7%AB%A0-%E6%9F%A5%E6%89%BE) <EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>кܴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
????????? [ ?? - ???? ](https://github.com/CyC2018/InterviewNotes/blob/master/notes/%E7%AE%97%E6%B3%95.md#%E7%AC%AC%E4%B8%89%E7%AB%A0-%E6%9F%A5%E6%89%BE) ????????????????????<3F><>???????
|
||||
|
||||
Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>[OpenJDK 1.7](http://download.java.net/openjdk/jdk7)
|
||||
????????[OpenJDK 1.7](http://download.java.net/openjdk/jdk7)
|
||||
|
||||
## 1. ArraList
|
||||
|
||||
[ArraList.java](https://github.com/CyC2018/InterviewNotes/blob/master/notes/src/ArrayList.java)
|
||||
|
||||
ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> RandomAccess <EFBFBD>ӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD>Ϊ ArrayList <20>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֵġ<D6B5>
|
||||
????? RandomAccess ??????????????????????????????????? ArrayList ??????????????
|
||||
|
||||
```java
|
||||
public class ArrayList<E> extends AbstractList<E>
|
||||
implements List<E>, RandomAccess, Cloneable, java.io.Serializable
|
||||
```
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> transient <20><><EFBFBD>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>鲻һ<E9B2BB><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ö<EFBFBD>ռ<EFBFBD><D5BC>Ԫ<EFBFBD>أ<EFBFBD><D8A3><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>û<EFBFBD><C3BB>Ҫȫ<D2AA><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>д writeObject() <EFBFBD><EFBFBD> readObject()<EFBFBD><EFBFBD>
|
||||
??????????????????????????? transient ???<3F><>?????????????<3F><>???????<3F><>????????????????????????????????<3F><>????????<EFBFBD><EFBFBD> writeObject() ?? readObject()??
|
||||
|
||||
```java
|
||||
private transient Object[] elementData;
|
||||
```
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϴ<EFBFBD>СΪ 10
|
||||
?????????<3F><>? 10
|
||||
|
||||
```java
|
||||
public ArrayList(int initialCapacity) {
|
||||
@ -132,7 +132,7 @@ public ArrayList() {
|
||||
}
|
||||
```
|
||||
|
||||
ɾ<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> System.arraycopy() <EFBFBD><EFBFBD>Ԫ<EFBFBD>ؽ<EFBFBD><EFBFBD>и<EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><EFBFBD>ܸߣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD>Ʋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
??????????? System.arraycopy() ???????<3F><>?????????????????????????????????????????????<3F><>????????????????<3F><>?????
|
||||
|
||||
```java
|
||||
public E remove(int index) {
|
||||
@ -150,9 +150,9 @@ public E remove(int index) {
|
||||
}
|
||||
```
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD>ʱʹ<EFBFBD><EFBFBD> ensureCapacity() <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㹻<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1.5 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
?????????? ensureCapacity() ????????????????????????????????????????????????????????? 1.5 ????
|
||||
|
||||
modCount <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼ ArrayList <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>仯<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊÿ<EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD> add() <EFBFBD><EFBFBD> addAll() ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ensureCapacity()<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ensureCapacity() <EFBFBD>ж<EFBFBD> modCount <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ġ<EFBFBD>
|
||||
modCount ??????? ArrayList ?????<3F><>?????????????????? add() ?? addAll() ?????????? ensureCapacity()?????????? ensureCapacity() ?<3F><>? modCount ????????
|
||||
|
||||
```java
|
||||
public void ensureCapacity(int minCapacity) {
|
||||
@ -190,7 +190,7 @@ private static int hugeCapacity(int minCapacity) {
|
||||
}
|
||||
```
|
||||
|
||||
<EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȳ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>Ƚϲ<EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD> modCount <20>Ƿ<EFBFBD><C7B7>ı䣬<C4B1><E4A3AC><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>׳<EFBFBD> ConcurrentModificationException<EFBFBD><EFBFBD>
|
||||
????????<3F><>???????????????????????????? modCount ??????????????????? ConcurrentModificationException??
|
||||
|
||||
```java
|
||||
private void writeObject(java.io.ObjectOutputStream s)
|
||||
@ -213,20 +213,20 @@ private void writeObject(java.io.ObjectOutputStream s)
|
||||
}
|
||||
```
|
||||
|
||||
**<EFBFBD><EFBFBD> Vector <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
|
||||
**?? Vector ??????**
|
||||
|
||||
1. Vector <EFBFBD><EFBFBD> ArrayList <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>ͬ<EFBFBD>ģ<EFBFBD>Ψһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector <20><>ͬ<EFBFBD><CDAC><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ͱ<EFBFBD> ArrayList Ҫ<><EFBFBD><F3A3ACB7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> ArrayList <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Vector<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɳ<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>
|
||||
2. Vector ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD> 2 <20><><EFBFBD>ռ䣬<D5BC><E4A3AC> ArrayList <EFBFBD><EFBFBD> 1.5 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
1. Vector ?? ArrayList ???????????????<3F><>??????????? Vector ????????????????? ArrayList ????????????????? ArrayList ?????? Vector???????????????????????????????
|
||||
2. Vector ??????????????<3F><>?? 2 ??????? ArrayList ?? 1.5 ????
|
||||
|
||||
Ϊ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>̰߳<EFBFBD>ȫ<EFBFBD><EFBFBD> ArrayList<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD> Collections.synchronizedList(new ArrayList<>()); <EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>̰߳<EFBFBD>ȫ<EFBFBD><EFBFBD> ArrayList<73><74>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9> concurrent <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD> CopyOnWriteArrayList <EFBFBD>ࣻ
|
||||
????????????? ArrayList????????? Collections.synchronizedList(new ArrayList<>()); ?????????????? ArrayList?????????? concurrent ????????? CopyOnWriteArrayList ??
|
||||
|
||||
**<EFBFBD><EFBFBD> LinkedList <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
|
||||
**?? LinkedList ??????**
|
||||
|
||||
1. ArrayList <EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD>LinkedList <20><><EFBFBD><EFBFBD>˫<EFBFBD><CBAB>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>֣<EFBFBD>
|
||||
2. ArrayList ֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>LinkedList <EFBFBD><EFBFBD>֧<EFBFBD>֣<EFBFBD>
|
||||
3. LinkedList <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD>Ԫ<EFBFBD>ظ<EFBFBD><EFBFBD>졣
|
||||
1. ArrayList ??????????????LinkedList ??????????????????
|
||||
2. ArrayList ???????????LinkedList ??????
|
||||
3. LinkedList ??????<3F><>??????????????
|
||||
|
||||
## 2. Vector <EFBFBD><EFBFBD> Stack
|
||||
## 2. Vector ?? Stack
|
||||
|
||||
[Vector.java](https://github.com/CyC2018/InterviewNotes/blob/master/notes/src/Vector.java)
|
||||
|
||||
@ -242,13 +242,13 @@ private void writeObject(java.io.ObjectOutputStream s)
|
||||
|
||||
[HashMap.java](https://github.com/CyC2018/InterviewNotes/blob/master/notes/src/HashMap.java)
|
||||
|
||||
ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD>
|
||||
???????????????????
|
||||
|
||||
Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> capacity Ϊ 16<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱣֤Ϊ 2 <20>Ĵη<C4B4><CEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Entry[] table <20><><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3>ȣ<EFBFBD>size <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
??????? capacity ? 16????????????????????? 2 ??<3F><>??????????? Entry[] table ?????????size ?????????????????
|
||||
|
||||
threshold <EFBFBD>涨<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD> size <20><><EFBFBD>ٽ<EFBFBD>ֵ<EFBFBD><D6B5>size <20><><EFBFBD><EFBFBD>С<EFBFBD><D0A1> threshold<6C><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5>ڣ<EFBFBD><DAA3>ͱ<EFBFBD><CDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>
|
||||
threshold ?<3F><>????? size ????????size ????<3F><>?? threshold??????????????????????????????
|
||||
|
||||
threshold = capacity * load_factor<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> load_factor Ϊ table <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD>ʹ<EFBFBD>õı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>load_factor <20><><EFBFBD><EFBFBD><EFBFBD>ᵼ<EFBFBD>¾۴صij<D8B5><C4B3>֣<EFBFBD><D6A3>Ӷ<EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD>ѯ<EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㷨<EFBFBD>ʼǡ<CABC>
|
||||
threshold = capacity * load_factor?????? load_factor ? table ????????????????load_factor ????????????????????????????<3F><>????????????
|
||||
|
||||
```java
|
||||
static final int DEFAULT_INITIAL_CAPACITY = 16;
|
||||
@ -268,7 +268,7 @@ final float loadFactor;
|
||||
transient int modCount;
|
||||
```
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>Կ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> capacity Ϊԭ<CEAA><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
?????????????????<3F><>?????????????????????? capacity ????????????
|
||||
|
||||
```java
|
||||
void addEntry(int hash, K key, V value, int bucketIndex) {
|
||||
@ -279,7 +279,7 @@ void addEntry(int hash, K key, V value, int bucketIndex) {
|
||||
}
|
||||
```
|
||||
|
||||
Entry <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Ԫ<EFBFBD>أ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD> next ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ʱ<EFBFBD><CAB1>ʹ<EFBFBD>á<EFBFBD>
|
||||
Entry ??????????????????????<3F><>? next ????????<3F><>??????<3F><>?
|
||||
|
||||
```java
|
||||
static class Entry<K,V> implements Map.Entry<K,V> {
|
||||
@ -290,7 +290,7 @@ static class Entry<K,V> implements Map.Entry<K,V> {
|
||||
}
|
||||
```
|
||||
|
||||
get() <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ֳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>key Ϊ null <EFBFBD><EFBFBD> <20><>Ϊ null<6C><6C><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><D0BF>Կ<EFBFBD><D4BF><EFBFBD> HashMap <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> null <20><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>
|
||||
get() ???????????????????key ? null ?? ??? null?????<3F><>?????? HashMap ??????? null ???????
|
||||
|
||||
```java
|
||||
public V get(Object key) {
|
||||
@ -306,7 +306,7 @@ public V get(Object key) {
|
||||
}
|
||||
```
|
||||
|
||||
put() <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> key <EFBFBD>Ƿ<EFBFBD>Ϊ null <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD> key Ϊ null <EFBFBD>ļ<EFBFBD>ֵ<EFBFBD>ԣ<EFBFBD><EFBFBD>²<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD> key Ϊ null <EFBFBD>ļ<EFBFBD>ֵ<EFBFBD><EFBFBD>ʱĬ<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 λ<>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ null <20><><EFBFBD>ܼ<EFBFBD><DCBC><EFBFBD> hash ֵ<><D6B5>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>֪<EFBFBD><D6AA>Ӧ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϡ<EFBFBD>
|
||||
put() ???????????? key ???? null ????????????????????????????? key ? null ??????????????? key ? null ???????????????????? 0 <20><>?????????? null ??????? hash ??????????????<3F><>?????????????
|
||||
|
||||
```java
|
||||
public V put(K key, V value) {
|
||||
@ -354,8 +354,8 @@ private V putForNullKey(V value) {
|
||||
|
||||
[ConcurrentHashMap.java](https://github.com/CyC2018/InterviewNotes/blob/master/notes/src/HashMap.java)
|
||||
|
||||
[ ̽<EFBFBD><EFBFBD> ConcurrentHashMap <EFBFBD>߲<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>ʵ<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD> ](https://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/)
|
||||
[ ??? ConcurrentHashMap ?????????????? ](https://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/)
|
||||
|
||||
# <EFBFBD>ο<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
# ?<3F><>?????
|
||||
|
||||
- Java <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD>
|
||||
- Java ??????
|
||||
|
Reference in New Issue
Block a user