黑馬程式設計師——java基礎——集合類
------- android培訓、java培訓、期待與您交流! ----------
面嚮物件語言對事物的體現都是以物件的形式,所以為了方便對多個物件的操作,Java就提供了集合類。
集合的繼承體系結構: 由於需求不同,Java就提供了不同的集合類。這多個集合類的資料結構不同,但是它們都是要提供儲存和遍歷功能的,我們把它們的共性不斷的向上提取,最終就形成了集合的繼承體系結構圖。
Collection
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--TreeSet
集合類的特點:集合只用於儲存物件,集合長度是可變的,集合可以儲存不同型別的物件。
一、Collection:是集合的頂層介面
Collection的功能概述:
1:新增功能
booleanadd(Object obj):新增一個元素
booleanaddAll(Collection c):新增一個集合的元素
2:刪除功能
voidclear():移除所有元素
booleanremove(Object o):移除一個元素
booleanremoveAll(Collection c):移除一個集合的元素(是一個還是所有)
3:判斷功能
booleancontains(Object o):判斷集合中是否包含指定的元素
booleancontainsAll(Collection c):判斷集合中是否包含指定的集合元素(是一個還是所有)
booleanisEmpty():判斷集合是否為空
4:獲取功能
Iterator<E>iterator()(重點)
5:長度功能
intsize():元素的個數
面試題:陣列有沒有length()方法呢?字串有沒有length()方法呢?集合有沒有length()方法呢?
6:交集功能
booleanretainAll(Collection c):兩個集合都有的元素?思考元素去哪了,返回的boolean又是什麼意思呢?
7:把集合轉換為陣列
Object[]toArray()
二、List介面:
List介面繼承自Collection介面,是單列集合的一個重要分支,習慣性地會將實現List介面的物件成為List集合。在List集合中允許出現重複元素,所有的元素是一種線性方式進行儲存的,在程式中可以通過索引來訪問集合中的指定元素,另外List集合還有一個特點就是元素有序,即元素的存入順序和取出順序一致。
List集合的特有功能:
A:新增功能
void add(int index,Objectelement):在指定位置新增元素
B:獲取功能
Object get(int index):獲取指定位置的元素
C:列表迭代器
ListIterator listIterator():List集合特有的迭代器
D:刪除功能
Object remove(int index):根據索引刪除元素,返回被刪除的元素
E:修改功能
Object set(int index,Objectelement):根據索引修改元素,返回被修飾的元素
List的子類特點
ArrayList: 底層資料結構是陣列,查詢快,增刪慢 執行緒不安全,效率高
Vector: 底層資料結構是陣列,查詢快,增刪慢 執行緒安全,效率低
LinkedList: 底層資料結構是連結串列,查詢慢,增刪快 執行緒不安全,效率高
三、Set介面:
Set介面和List介面一樣,同樣繼承自Collection介面,它與Collection介面中的方法基本一致,並沒有對Collection介面在功能上進行擴充,只是比Collection介面更加嚴謹。與List介面不同的是,Set介面中的元素無序,並且都會以某種規則保證存入的元素不重複出現。Set集合主要有兩個實現類,分別是TreeSet和HashSet。
HashSet集合
A:底層資料結構是雜湊表(是一個元素為連結串列的陣列)
B:雜湊表底層依賴兩個方法:hashCode()和equals()
執行順序:
首先比較雜湊值是否相同
相同:繼續執行equals()方法
返回true:元素重複了,不新增
返回false:直接把元素新增到集合
不同:就直接把元素新增到集合
C:由hashCode()和equals()保證元素唯一性
D:開發的時候,程式碼非常的簡單,自動生成即可。
E:HashSet儲存字串並遍歷
F:HashSet儲存自定義物件並遍歷(物件的成員變數值相同即為同一個元素)
TreeSet集合
A:底層資料結構是紅黑樹(是一個自平衡的二叉樹)
B:保證元素的排序方式
a:自然排序(元素具備比較性)
讓元素所屬的類實現Comparable介面
b:比較器排序(集合具備比較性)
讓集合構造方法接收Comparator的實現類物件
四、Map集合
Map集合和Collection集合的區別:
Map集合儲存元素是成對出現的,Map集合的鍵是唯一的,值是可重複的。可以把這個理解為:夫妻對Collection集合儲存元素是單獨出現的,Collection的兒子Set是唯一的,List是可重複的。
注意:
Map集合的資料結構值針對鍵有效,跟值無關
Collection集合的資料結構是針對元素有效
Map集合的功能概述:
1:新增功能
V put(K key,V value):新增元素。
如果鍵是第一次儲存,就直接儲存元素,返回null,如果鍵不是第一次存在,就用值把以前的值替換掉,返回以前的值
2:刪除功能
void clear():移除所有的鍵值對元素
V remove(Object key):根據鍵刪除鍵值對元素,並把值返回
3:判斷功能
boolean containsKey(Object key):判斷集合是否包含指定的鍵
boolean containsValue(Object value):判斷集合是否包含指定的值
boolean isEmpty():判斷集合是否為空
4:獲取功能
Set<Map.Entry<K,V>>entrySet()
V get(Object key):根據鍵獲取值
Set<K> keySet():獲取集合中所有鍵的集合
Collection<V> values():獲取集合中所有值的集合
5:長度功能
int size():返回集合中的鍵值對的對數