集合的由來:
我們學習的是面向對象語言,而面向對象語言對事物的描述是通過對象體現的,為了方便對多個對象進行操作,我們就必須把這多個對象進行存儲。
而要想存儲多個對象,就不能是一個基本的變量,而應該是一個容器類型的變量,在我們目前所學過的知識里面,有哪些是容器類型的呢?
數組和StringBuffer。但是呢?StringBuffer的結果是一個字符串,不一定滿足我們的要求,所以我們只能選擇數組,這就是對象數組。
而對象數組又不能適應變化的需求,因為數組的長度是固定的,這個時候,為了適應變化的需求,Java就提供了集合類供我們使用。
數組和集合的區別?
A:長度區別
數組的長度固定
集合長度可變
B:內容不同
數組存儲的是同一種類型的元素
而集合可以存儲不同類型的元素
C:元素的數據類型問題
數組可以存儲基本數據類型,也可以存儲引用數據類型
集合只能存儲引用類型
剛說過集合是存儲多個元的,但是呢,存儲多個元素我們也是有不同需求的:比如說,我要這多個元素中不能有相同的元素,
再比如說,我要這多個元素按照某種規則排序一下。針對不同的需求,Java就提供了不同的集合類,這樣呢,Java就提供了很多個集合類。
這多個集合類的數據結構不同,結構不同不重要的,重要的是你要能夠存儲東西,并且還要能夠使用這些東西,比如說判斷,獲取等。
既然這樣,那么,這多個集合類是有共性的內容的,我們把這些集合類的共性內容不斷的向上提取,最終就能形成集合的繼承體系結構。
數據結構:數據的存儲方式。
Collection:是集合的頂層接口,它的子體系有重復的,有唯一的,有有序的,有無序的。(后面會慢慢的講解)
Collection的功能概述:
1:添加功能
boolean add(Object obj):添加一個元素
boolean addAll(Collection c):添加一個集合的元素
2:刪除功能
void clear():移除所有元素
boolean remove(Object o):移除一個元素
boolean removeAll(Collection c):移除一個集合的元素(是一個還是所有)
3:判斷功能
boolean contains(Object o):判斷集合中是否包含指定的元素
boolean containsAll(Collection c):判斷集合中是否包含指定的集合元素(是一個還是所有)
boolean isEmpty():判斷集合是否為空
4:獲取功能
Iterator<E> iterator()(重點)
5:長度功能
int size():元素的個數
面試題:數組有沒有length()方法呢?字符串有沒有length()方法呢?集合有沒有length()方法呢?
6:交集功能
boolean retainAll(Collection c):兩個集合都有的元素?思考元素去哪了,返回的boolean又是什么意思呢?
7:把集合轉換為數組
Object[] toArray()