[Day19]Collection接口中的子類(List集合、Set集合)

1.List接口java

  1.1API總結算法

  (1)是一個元素存取有序的集合數組

  (2)是一個帶有索引的集合,經過索引能夠精確的操做集合中的元素併發

  (3)集合中有能夠重複的元素,經過元素的equals方法,來比較是否爲重複的元素spa

  (4)List接口的經常使用子類:ArrayList集合、LinkedList集合對象

  1.2List接口中經常使用的方法索引

  (1)add(Object e):向集合末尾處添加指定的元素接口

  (2)add(int index,Object e):向集合指定索引處,添加指定的元素,原有元素依次後移隊列

  (3)remove(Object e):將指定元素對象,從集合中刪除,返回值爲被刪除的元素rem

  (4)remove(int index):將指定索引處的元素,從集合中刪除,返回值爲被刪除的元素

  (5)set(int index,Object e):將指定索引處的元素,替換成指定的元素,返回值爲替換前的元素

  (6)get(int index):獲取指定索引處的元素,並返回該元素

  1.3List集合3中遍歷方式

  (1)迭代器Iterator

  (2)for循環

  (3)增強for循環

  1.4 Iterator的併發修改異常

  (1)產生緣由:在迭代過程當中,使用了集合的方法對元素進行操做。致使迭代器不知道集合中的變化,易引起數據的不肯定性

  (2)錯誤報告:java.util.ConcurrentModificationException

  (3)解決辦法:在迭代過程當中,不使用集合的方法操做元素,經過ListIterator迭代器操做元素

  1.5List結合存儲數據的結構

  (1)堆棧-先進後出,棧的入口、出口都是棧的頂端位置

  (2)隊列-先進先出,隊列的入口、出口各佔一側

  (3)數組-查找元素快:經過索引,能夠快速訪問指定位置的元素

         增刪元素慢

  (4)鏈表-多個節點之間,經過地址進行鏈接

       查找元素慢,增刪元素快

  1.6ArrayList集合-數據存儲的結構是數組結構,元素增刪慢,查找快

  1.7LinkedList集合-數據存儲的結構是鏈表結構,方便元素添加、刪除的集合,LinkedList提供了大量首尾操做的方法

  1.8Vector集合-數據存儲的結構是數組結構,爲JDK中最先提供的集合。Vector集合已被ArrayList替代

 

2.Set接口

  2.1Set接口

  (1)Set接口的集合中所存儲的元素是不重複的,是一個無序的集合

  (2)經過元素的equals方法,來判斷是否爲重複元素

  2.2HashSet集合-此類實現Set接口,由哈希表支持。HashSet集合不能保證迭代順序和元素存儲順序相同

  (1)數據存儲方法

    採用哈希表結構存儲數據,保證元素惟一性的方法依賴於:hashCode()與equals()方法

  (2)哈希表

    將對象存放到數組中時,根據這些對象的特有數據結合相應的算法(hashCode方法),計算出這個對象在數組中的位置,而後將對象存放到數組中。

  (3)hashCode方法

    當向哈希表存放元素時,須要根據元素的特有數據結合相應的算法

  (4)HashSet存儲Java API中的類型元素

    給HashSet中存儲JAvaAPI中提供的類型元素時,不須要重寫元素的hashCode和equals方法,由於這兩個方法已經在Java中重寫完畢,如String類、Integer類

    給HashSet中存放自定義類型元素時,須要重寫對象中的hashCode和equals方法,創建本身的比較方式,才能保證HashSet集合中的對象惟一

  2.3LinkedHashSet

    HashSet子類,是鏈表和哈希表組合的一個數據存儲結構。保證元素的存入和取出的順序

  

3.判斷集合元素惟一的原理

  3.1ArrayList的contains方法

  (1)Boolean       contains(Object o)   若是此列表中包含指定的元素,則返回true

  (2)經過傳入的元素的equals方法依次與集合中的舊元素比較,根據返回值判斷

    自定義類型在未重寫equals方法前,判斷的依據是地址,想根據內容判斷須要重寫元素的equals方法

  3.2HashSet的add/contains等方法

  (1)boolean  add(E e)  若是此set中還沒有包含指定元素,則添加指定元素

    set集合中不能存放重複元素,在添加過程當中進行判斷,有則不添加,不然添加

  (2)boolean  contains(Object o)  若是此set包含指定元素,則返回true

   HashSet集合因爲是無序的,其判斷惟一的依據是元素類型的hashCode和equals方法

   先判斷新元素與集合內已有的舊元素的hashCode值,不一樣添加,相同再判斷equals比較結果,不一樣添加。若是存儲自定義類型,須要重寫元素類的兩方法。

相關文章
相關標籤/搜索