java中幾種常用的資料結構
JAVA中有幾種常用的資料結構,主要分為Collection和map兩個主要介面(介面值提供方法,並不提供實現),而程式中最終使用的資料結構是繼承自這些介面的資料結構類。
Collcation:
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表示。
原文:https://blog.csdn.net/u010947402/article/details/51878166