java基本數據結構匯總


import java.util.Hashtable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.Stack;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;

今天看了java系統提供的一些基本的集合,這里匯總一下,算是學習的一個總結。

他們所有的集合基本都是基於 collection接口 和 Map 接口

 

Collection

1.list (ArrayList ,LinkedList(頻繁插入刪除的時候用),Vector(線程安全),Stack(先進后出))

2.set (HashSet(無序,根據哈希值查找Entry),TreeSet(需要排序的時候用),LinkedHashSet(有序&&有序迭代的時候用) )

          

Map

1.TreeMap(需要排序的時候用)

2.HashMap(無序,根據key的哈希值查找Entry,concurrentHashMap(線程安全)),LinkedHashMap(有序&&有序迭代的時候用),HashTable(線程安全)

 

然后我們對具體的每個集合做一個簡單的分析

ArrayList:數組集合,無容量限制,非線程安全

LinkedList:基於雙向列表的機制,插入創建一個Entry對象,並切換前后元素引用,非線程安全

               相對於ArrayList,其優勢:add,remove較快,因為只需要操作前后元素,而ArrayList需要操作整個列表

                                                  get,set較慢以為ArrayList是有序的,LinkedList需要整個遍歷

Vector:同ArrayList類似,最大區別是線程安全,還有自動擴充機制為2倍(ArrayList1.5倍)

Stack:繼承自Vector,壓棧,后進先出(push,pop。peek)

 

所有HashSet都是在加入的時候,先從對象中hashcode一個值,然后通過這個值加入到Set中

HashSet:基於HashMap實現,非線程安全,能存一個null(哈希表通過使用散列表的形式來存貯信息,集合內元素沒有特定順序,且隨時會變)

TreeSet:(SortedSet)基於TreeMap實現 ,key需要實現comparator,實現排序

              相對於HashSet:支持排序

 

LinkedHashSet:根據哈希值來判斷元素存貯的位置,同時使用鏈表來維護元素之前的順序,所以他是有序的

                        優勢:迭代速度比HashSet好,插入刪除查(因為需要維護前后元素的關系)

 

HashMap:根據數組的中hash碼,查找Entry在另外一個數組中的位置,遍歷用iterator

HashTable:線程安全,不允許null,便利用enumeration

TreeMap:能排序的map

LinkedHashMap:相對於HashMap,插入的時候有序,所以排序的時候

 


免責聲明!

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



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