集合(上)

  • 集合本身是一個工具

數組的長度是固定的。集合的長度是可變的。

數組中存儲的是同一類型的元素,可以存儲基本數據類型值。集合存儲的都是對象。而且對象的類型可以不一致。

        Collection接口是集合中的頂層接口,在學習時:我們需要看最頂層怎麼用, 創建底層對象即可。因爲底層繼承了父類中的所有功能。

實現Collection接口的所有子類都會進行方法重寫。

Collecton接口常用的子接口有:List接口、Set接口

List接口常用的子類有:ArrayList類、LinkedList類

Set接口常用的子類有:HashSet類、LinkedHashSet類


  • Collection接口的基本方法


Collection集合元素的通用獲取方式:在取元素之前先要判斷集合中有沒有元素,如果有,就把這個元素取出來,繼續在判斷,如果還有就再取出出來。一直把集合中的所有元素全部取出。這種取出方式專業術語稱爲迭代。

  • Iterator迭代器

hasNext()方法:用來判斷集合中是否有下一個元素可以迭代。如果返回true,說明可以迭代。

next()方法:用來返回迭代的下一個元素,並把指針向後移動一位。

迭代集合元素圖解:

  • 併發修改異常

            迭代的常規用法中我們要儘量避免在迭代過程中爲集合添加/刪除數據。否則會報錯,原因是Java拋出了併發修改異常。        

    迭代過程中併發修改異常的原因爲迭代器中”記憶”的集合長度與集合中實際長度不同,而導致出現索引與實際元素不符甚至無限循環的情況發生。

    所以在使用Iterator時,避免類似操作,for循環底層爲迭代器實現,所以也需要避免類似操作。

    有些迭代器避免了這樣的問題,如List  Iterator,但該類並不通用也不常用,實際開發中很少使用,只需要簡單瞭解。

    增強for循環和老式的for循環有什麼區別?

    注意:新for循環必須有被遍歷的目標。目標只能是Collection或者是數組。

    建議:遍歷數組時,如果僅爲遍歷,可以使用增強for如果要對數組的元素進行操作,使用老式for循環可以通過角標操作。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章