大數據之路week01–day02_2 集合方面的總結
- 2019 年 11 月 12 日
- 筆記
(初稿 太晚了,明天再進行補充)
1、對象數組(掌握)
(1)數組既可以存儲基本數據類型,也可以存儲引用類型。它存儲引用類型的時候的數組就叫對象數組。
(2)案例:
用數組存儲5個學生對象,並遍曆數組。
1 package day02; 2 3 /** 4 * @author WYH 5 * @version 2019年11月12日 下午10:28:33 6 */ 7 public class test { 8 public static void main(String[] args) { 9 Students[] s = new Students[2]; 10 11 Students s1 = new Students("xiao",21); 12 Students s2 = new Students("da",22); 13 14 s[0] = s1; 15 s[1] = s2; 16 17 for(int i = 0;i<s.length;i++) { 18 System.out.println(s[i]); 19 } 20 21 22 } 23 24 }
2、集合(Collection)(掌握)
(1)集合的由來?
我們學習的時Java — 面向對象 –操作很多對象 –存儲 — 容器(數組和StringBuffer)– 數組而數組得長度固定,所以不適合做變化得需求,Java就提供了集合供我們使用。
(2)集合和數組得區別?
A: 長度區別
數組固定
集合可變
B: 內容區別
數組可以是基本類型,也可以是引用類型
集合只能是引用類型
C: 元素內容
數組只能存儲同一種類型
集合可以存儲不同類型(其實集合一般存儲得也是同一種類型)
(3)集合的繼承體系結構?
由於需求不同,Java就提供了不同得集合類,而這多個集合類得數據結構不同,但是他們都是要提供存儲和遍歷功能得容器,我們把他們得共性不斷向上提取,
最終就形成了集合得繼承體系結構。
Collection
|–List
|–ArrayList
|–Vector
|–LinkList
|–Set
|–HashSet
|–TreeSet
(4)Collection得功能概述(自己補齊)
A: 添加功能
B:刪除功能
C: 判斷功能
D: 獲取功能
E: 長度功能
F: 交集(了解)
G: 把集合轉數組(了解)
(5)Collection集合得遍歷
A: 把集合轉數組(了解)
(程式碼補充)
B: 迭代器(集合專用方式)
(程式碼補充)
(6)迭代器
A: 是集合得獲取元素得方式
B: 是依賴於集合而存在得
C:迭代器得原理和源碼
a:為什麼定義為了一個介面而不是一個實現類(如果是實現類,那麼就要提供具體得實現方法,但是我們的集合有很多種,所以是一個介面)
b: 看了看迭代器的內部類實現
(7)Collecton集合的案例(遍歷方式 迭代器)
集合的操作步驟:
A: 創建集合對象
B: 創建元素對象
C: 把元素添加帶集合
D: 遍歷集合
A: 存儲字元串並遍歷
(程式碼補充)
B: 存儲自定義對象並遍歷
(程式碼補充)
2、集合(List)(掌握)
(1)List是Collection的子介面
特點:有序(存儲順序和取出順序一致),可重複。
(2)List的特有功能:(自己補齊)
A: 添加功能
B: 刪除功能
C: 獲取功能
D: 迭代器功能
E: 修改功能
(3)List集合的特有遍歷功能
A: 由size()和get()結合。
B: 程式碼演示
(程式碼補充)(一種迭代器,一種for循環)
(4)列表迭代器的特有功能:(了解)
可以逆向遍歷,但是要先正向遍歷,所以毫無意義,基本不會使用。
(5)並發修改異常
A: 出現的異常
迭代器遍歷集合,集合修改集合元素
B: 原因
迭代器是依賴集合二點,而集合的改變,迭代器並不知道。
C: 解決方案
a: 迭代器遍歷,迭代器修改(ListIterator)
元素添加在剛剛迭代器的位置
(程式碼補充)
b: 集合遍歷,集合修改(size()和get())
元素添加在集合的末尾
(程式碼補充)
(6)常見數據結構
A: 棧 先進後出
B: 隊列 先進先出
C: 數組 查詢快,增刪慢
D: 鏈表 查詢嗎,慢,增刪快
(7)List的子類特點(面試題)
ArrayList
底層數據結構是數組,查詢快,增刪慢。
執行緒不安全,效率高。
Vector
底層數據結構是數組,查詢快,增刪慢。
執行緒安全,效率低。
LinkedList
底層數據結構是鏈表,查詢慢,增刪快。
執行緒不安全,效率高。
到底使用誰呢?看需求?
分析:
要安全嗎?
要:Vector(即使要,也不適用這個,後面再說)
不要:ArrayLIst或者LinkedList
查詢多:ArrayList
增刪多:LinkedList
都不知道選啥的時候,選ArrayList。