Java中各Set實現類的效能分析
HashSet和TreeSet是Set的兩個典型實現,到底如何選擇HashSet和TreeSet呢?HashSet的效能總是比TreeSet好,(特別是最常用的新增、查詢元素等操作),因為TreeSet需要額外的紅黑樹演算法來維護集合元素的次序。只有當需要一個保持排序的Set時,才應該使用TreeSet,否則都應該使用HashSet.
HashSet還有一個子類:LinkedHashSet,對於普通的插入、刪除操作,LinkedHashSet比HashSet要略微慢一點,這是由維護連結串列所帶來的額外開銷造成的,但由於有了連結串列,遍歷LinkedHashSet會更快。
EnumSet是所有Set實現類中效能最好的,但它只能儲存同一個列舉類的列舉值作為集合元素。
必須指出的是,Set的三個實現類HashSet、TreeSet和EnumSet都是執行緒不安全的。如果有多個執行緒同時訪問一個Set集合,並且有超過一個執行緒修改了該Set集合,則必須手動保證該Set集合的同步性。通常可以通過Collections工具類的synchronizedSortedSet方法來包裝該Set集合。此操作最好在建立時進行,以防止對Set集合的意外非同步訪問。
相關文章
- Java中各種線性表的效能分析Java
- JAVA--set介面及其實現類的使用Java
- Redis 中的 set 和 sorted set 如何使用,原始碼實現分析Redis原始碼
- Set介面及其實現類
- Java原子類實現原理分析Java
- 兩種Java容器類List和Set分析Java
- JAVA的反射機制==>用反射分析類的實現Java反射
- Java中不同的併發實現的效能比較Java
- 好程式設計師Java培訓Java容器類List和Set分析程式設計師Java
- C#中類的屬性訪問器--get和set分析C#
- 各類排序演算法的c++實現排序演算法C++
- 實現Oracle對ldap資料的各類操作OracleLDA
- 自己動手實現Java中的StringBuffer類Java
- Java Object類的各個方法JavaObject
- 單例模式的各種實現方式(Java)單例模式Java
- Java 基礎 - 各項集合實現Java
- Android 的滑動分析以及各種實現Android
- Android中的Message類以及Java物件池的實現AndroidJava物件
- 從零到有模擬實現一個Set類
- java反射呼叫set和get方法的通用類Java反射
- 實現多項式的JAVA類Java
- java關於繼承父類,需要實現父類中的構造方法Java繼承構造方法
- 怎麼實現微服務的實時效能分析?微服務
- 提高 Java 程式碼效能的各種技巧Java
- 資料分析 | Numpy實戰(三) - 分析各類使用者佔比
- Java 併發包中的讀寫鎖及其實現分析Java
- Java中的Set, List, Map漫談Java
- spring中各個類的作用Spring
- javascript中各類的prototype屬性JavaScript
- ORACLE中各類NAME的簡介Oracle
- 實現Java集合迭代的高效能Java
- scala中的匿名子類實現
- Java執行緒安全的集合類:Map、List、SetJava執行緒
- ReactiveCocoa 中 集合類RACSequence 和 RACTuple底層實現分析React
- Java: 實現自迴歸分析/線性迴歸分析/基金各項指標計算等Java指標
- Binder Java層的實現原理分析Java
- Java阻塞佇列中的異類,SynchronousQueue底層實現原理剖析Java佇列
- 盤點JAVA中基於CAS實現的原子類, 你知道哪些?Java