1. 程式人生 > >黑馬程式設計師——java基礎——集合類

黑馬程式設計師——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():返回集合中的鍵值對的對數