(初稿 太晚了,明天再進行補充)面試
一、對象數組(掌握)數組
(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 }
二、集合(Collection)(掌握)學習
(1)集合的由來?spa
咱們學習的時Java -- 面向對象 --操做不少對象 --存儲 -- 容器(數組和StringBuffer)-- 數組而數組得長度固定,因此不適合作變化得需求,Java就提供了集合供咱們使用。線程
(2)集合和數組得區別?code
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: 存儲自定義對象並遍歷
(代碼補充)
二、集合(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。