java數據結構

一、List接口,有序的Collection接口,能夠精確地控制每個元素插入的位置,允許有相同的元素

1.鏈表,LinkedList實現了List接口,允許null元素,提供了get()、remove()、insert()方法,沒有同步方法


2.數組列表,ArrayList,可以動態變化容量的數組,非同步的

數組列表中存放的是Object類型,因此在數組列表中存放的對象類型,以其原型的父類代替,提取其中的元素時要進行類型轉換


二、Set接口,不包含重複元素的Collection接口
1.散列集,HashSet,實現了Set接口,非線性同步
與鏈表和數組列表幾乎類似,但在數據處理時,比使用鏈表進行數據處理花費時間更短,處理大數據時通常使用散列集


2.樹集,TreeSet,實現了Set接口,實現了排序功能,該集合中的元素默認按升序排列元素
使用樹集數據結構的對象,需要實現Comparable接口,樹集輸出的數據都是經過排序的


三、Map接口,沒有繼承Collection接口,其提供key到value的映射,Map中不能包含相同的key,每個key只能映射一個value。
1.散列表類,HashTable,繼承了Map接口,非空(non-null)的對象都可作爲key或value,是同步的
添加數據:put(key,value);
取出數據:get(key);
特點:無序的,因此可以快速查找特定的元素

構造函數:Hashtable(),初始容量11,負載因子0.75,即散列表中已經有75%的位置被放滿,則進行再散列。
負載因子越高(越接近1),則內存使用率越高,元素的尋找時間越長,反之,則內存浪費越多,尋找時間越短
key的對象將通過計算散函數確定與之對應的value位置 ,因此key的對象需要實現hashCode()和equals()方法。
兩個對象相同,則它們的hashCode必須相同;兩個對象不同,則它們的hashCode不一定不同。
衝突:不同對象的hashCode相同,則稱爲衝突,衝突將導致操作散列表的時間開銷增大。因此要同時複寫equals()和hashCode()方法
2.散列映射類,HashMap,與HashTable類似,不是HashMap是非同步的,且允許null

3.樹映像,TreeMap,輸出的數據按照關鍵字排序了
發佈了53 篇原創文章 · 獲贊 11 · 訪問量 62萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章