更新時間:2020-05-22 14:49:15 來源:動力節點 瀏覽2167次
Java 集合框架提供了一套性能優良,使用方便的接口和類,java集合框架位于java.util包中, 所以當使用集合框架的時候需要進行導包。下面介紹幾個接口中常用的接口以及實現類。
List接口的常用實現類
一個 List 是一個元素有序的、可以重復、可以為 null 的集合(有時候我們也叫它“序列”)。
ArrayList
最常用的List接口實現類,底層使用可變長度的動態數組實現。ArrayList有一個初始容量(capacity = 10),當元素數量大于初始容量時進行擴容,新的數組長度 = 舊數組長度 + 舊數組長度 / 2。
因為每個元素都有固定的位置索引,所以根據索引查詢元素的速度非常快。如果在中間插入元素時,由于后面的元素全部要后移一位,所以性能會比較差。
由于沒有做并發訪問控制,所以它是一個非線程安全的集合。允許重復元素或null元素。
List接口的雙向鏈接的實現類,允許NULL元素。它表現上是一個有序的集合,但內存中其實是無序保存。
由于原因,所以它插入的速度會很快,但是查詢一個元素的速度較ArrayList速度慢很多。是一個非線程安全的集合。
Vector
Vector底層使用動態數組實現,默認初始容量為10,可以通過構造方法指定初始容量,同時可以指定擴容時的增量。
擴容規則是指 新容量 = 舊容量 + 擴容增量,若未指定擴容增量則 新容量 = 2 * 舊容量。它的關鍵方法都加了synchronized,所以是一個線程安全的集合。
如果是實現了Set接口的集合類,具備的特點:無序,不可重復
添加元素 的順序與元素出來的順序是不一致的。
注重獨一無二的性質,該體系集合可以知道某物是否已近存在于集合中,不會存儲重復的元素。
hashSet
HashSet 底層是使用了哈希表來支持的,特點: 存取速度快。
往Hashset添加元素的時候,HashSet會先調用元素的hashCode方法得到元素的哈希值 ,
然后通過元素的哈希值經過移位等運算,就可以算出該元素在哈希表中的存儲位置。
LinkedHashSet
LinkedHashSet 底層使用 LinkedHashMap 來保存所有元素,它繼承與 HashSet,其所有的方法操作上又與 HashSet 相同,因此 LinkedHashSet 的實現上非常簡單,只提供了四個構造方法。
并通過傳遞一個標識參數,調用父類的構造器,底層構造一個 LinkedHashMap 來實現,在相關操作上與父類 HashSet 的操作相同,直接調用父類 HashSet 的方法即可。
treeSet
treeSet 底層是以紅-黑樹的數據結構實現的,默認對元素進行自然排序(String)。
如果在比較的時候兩個對象返回值為0,那么元素重復。
Map接口的常用實現類
Map 提供了一個更通用的元素存儲方法。 Map 集合類用于存儲元素對(稱作“鍵”和“值”),其中每個鍵映射到一個值。
從概念上而言,您可以將 List 看作是具有數值鍵的 Map。 而實際上,除了 List 和 Map 都在定義 java.util 中外,兩者并沒有直接的聯系。
本文將著重介紹核心 Java 發行套件中附帶的 Map,同時還將介紹如何采用或實現更適用于您應用程序特定數據的專用 Map。
往HashMap添加元素的時候,首先會調用鍵的hashCode方法得到元素的哈希碼值,然后經過運算 就可以算出該元素在哈希表中的存儲位置。
并允許使用 null 值和 null 鍵。此類不保證映射的順序,特別是它不保證該順序恒久不變。
HashTable
HashTable是同步的(synchronized函數),而HashMap不同步,所以HashTable要慢一些HashTable不接受null鍵和值。
而HashMap接受一個null鍵和無數個null值除了keySet(), entrySet(), values()這些HashMap支持的迭代之外,HashTable還支持基于Enumeration的keys(), elements(), 但是在現在它們的實現都是基于一個實現了Enumeration和Iterator接口的類。
TreeMap也是基于紅黑樹(二叉樹)數據結構實現 的, 特點:會對元素的鍵進行排序存儲。
注意:Set的元素不可重復,如果set元素重復將添加不成功。
Map的鍵不可重復,如果鍵重復將直接覆蓋。
以上就是動力節點java培訓機構的小編針對“Java集合框架視頻教程,看完本篇全了解了”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習