java數據結構總結學習

java 中幾種常用數據結構

Java中有幾種常用的數據結構,主要分爲Collection和map兩個主要接口(接口只提供方法,並不提供實現),而程序中最終使用的數據結構是繼承自這些接口的數據結構類。

一、幾個常用類的區別 
1.ArrayList: 元素單個,效率高,多用於查詢 
2.Vector: 元素單個,線程安全,多用於查詢 
3.LinkedList:元素單個,多用於插入和刪除 
4.HashMap: 元素成對,元素可爲空 
5.HashTable: 元素成對,線程安全,元素不可爲空 
二、Vector、ArrayList和LinkedList 
大多數情況下,從性能上來說ArrayList最好,但是當集合內的元素需要頻繁插入、刪除時LinkedList會有比較好的表現,但是它們三個性能都比不上數組,另外Vector是線程同步的。所以: 
如果能用數組的時候(元素類型固定,數組長度固定),請儘量使用數組來代替List; 
如果沒有頻繁的刪除插入操作,又不用考慮多線程問題,優先選擇ArrayList; 
如果在多線程條件下使用,可以考慮Vector; 
如果需要頻繁地刪除插入,LinkedList就有了用武之地; 
如果你什麼都不知道,用ArrayList沒錯。 
三、Collections和Arrays 
在Java集合類框架裏有兩個類叫做Collections(注意,不是Collection!)和Arrays,這是JCF裏面功能強大的工具,但初學者往往會忽視。按JCF文檔的說法,這兩個類提供了封裝器實現(Wrapper Implementations)、數據結構算法和數組相關的應用。 
想必大家不會忘記上面談到的“折半查找”、“排序”等經典算法吧,Collections類提供了豐富的靜態方法幫助我們輕鬆完成這些在數據結構課上煩人的工作: 
binarySearch:折半查找。 
sort:排序,這裏是一種類似於快速排序的方法,效率仍然是O(n * log n),但卻是一種穩定的排序方法。 
reverse:將線性表進行逆序操作,這個可是從前數據結構的經典考題哦! 
rotate:以某個元素爲軸心將線性表“旋轉”。 
swap:交換一個線性表中兩個元素的位置。 
…… 
Collections還有一個重要功能就是“封裝器”(Wrapper),它提供了一些方法可以把一個集合轉換成一個特殊的集合,如下: 
unmodifiableXXX:轉換成只讀集合,這裏XXX代表六種基本集合接口:Collection、List、Map、Set、SortedMap和SortedSet。如果你對只讀集合進行插入刪除操作,將會拋出UnsupportedOperationException異常。 
synchronizedXXX:轉換成同步集合。 
singleton:創建一個僅有一個元素的集合,這裏singleton生成的是單元素Set, 
singletonList和singletonMap分別生成單元素的List和Map。 
空集:由Collections的靜態屬性EMPTY_SET、EMPTY_LIST和EMPTY_MAP表示

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