java collection集合


博客已遷移到CSDN《https://blog.csdn.net/qq_33375499

 

集合用於存儲對象的容器。集合中可以存儲任意類型的對象,長度可變。

 

集合和數組的比較

 

  1. 集合和數組都是存儲對象的容器,不同的是,數組可以存儲基本數據類型(intshortlongcharBooleandoublefloatbyte),集合只能存儲任意類型的對象。
  2. 數組長度是固定的,集合的長度是可變的(根據加載因子和擴容增量來完成擴容)

 

數組操作復雜,在java中可用方法少,集合操作簡單,有很多操作方法。


對於集合,頂層都實現了Iterable接口,表明集合都是可迭代的,可以視同iterable()方法獲取集合對於的迭代器,也可以使用增強的for循環進行迭代。

 

1、Collection:collection為所以集合的定級接口,繼承了Iterable類,表明所有集合類都是可迭代的。

2、List: 實現了Collection接口,存儲的數據是有序的、可重復的,可通過索引進行元素訪問。

 

3、ArrayList:底層實現為數組,線程不安全,查找效率高,增刪效率低。

 

4、Vector:由下圖可知vectorArrayList實現原理相同,但是vector是線程安全的(synchronized),效率略低於ArrayList

5、Stack:繼承Vector,是一個先進后出的棧。

6、LinkedList:底層實現為雙向鏈表,進行元素的增刪效率高,查詢效率低。

7、Queue:隊列,先進先出(FIFO)

8、Set:存儲的元素是無序的、唯一的。在程序運行中,如果使用add添加一個已經存在的元素,將返回false

9、HashSet:底層實現為哈希表(鏈表+數組),線程不安全,查找效率高,增刪效率低,通過元素的hashCodeequels方法保證了元素的唯一性。

上圖為HashSet底層實現模式哈希表(數組+鏈表),當一條鏈上元素超過8個以上后,會自動轉換為紅黑樹來存儲元素,提高查詢效率。

 

11、TreeSet:底層實現為二叉樹,線程不安全,可對元素進行自動排序,保證元素唯一性的方式是compareTo方法返回0。

12、LinkedHashSet:底層實現為鏈表和哈希表,線程不安全,存儲的元素時有序的、唯一的,通過元素的hashCodeequels方法保證了元素的唯一性。

 

 

Arrays:類Arrays為集合的工具類,可使用該類的方法對集合進行排序、轉換為list等操作。

Collections:為所有直接或間接實現了Collection接口的集合類的工具類,該類封裝了對集合的各種操作,如排序、反轉、替換等操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM