Java工具類學習筆記
本人早期整理的Java工具類學習筆記,分享出來,希望大家多多提點建議和意見。
集合類
- Set
- HashSet
- LinkedHashSet
- TreeSet
-
優點:
通過一個HashMap來實現數據的保存,內部實現紅黑樹數據結構,使所有元素按升序保存。
提供高效的get和contains方法,保存操作的效率為log(n)
缺點:
默認大小為16, 如果超過則需要重新申請內存空間,大小為原來的兩倍,并把原來的數據內容復制到
新的內存空間中(來自HashMap)。
線程不安全(需通過Collections.synchronizedList方法設置)
加入的元素升級排序而改變
注:treeset對元素有要求,必須實現Comparable接口或是Comparator 接口)
注:通常缺省的load factor 0.75較好地實現了時間和空間的均衡。增大load factor可以節省空間但相應的查找時間將增大,這會影響像get和put這樣的操作。
- CopyOnWriteArraySet
- 優點:
針對于對Set操作的情況有很多變化時使用,優其是在高并發的情況不想使用同步控制鎖時
缺點:
消耗比較大的資料,每次作更新操作時,都會重新Copy一塊內存后,再做合并操作。
- List
- ArrayList
-
優點:
使用數組,提供快速的get,add和iterate方法,占用比較小的內存空間
缺點:
線程不安全(需通過Collections.synchronizedList方法設置)
insert和remove操作,非常慢(需要移動數組元素來實現)
當size超過時,需要新建一個較大的數據(默認大小是10,增量是 (size * 3)/2 + 1,
且把原來的數據都復制到新的上面)
- LinkedList
-
優點:
使用鏈表結構,提供快速的add, insert, remove方法,占用比較小的內存空間
缺點:
線程不安全(需通過Collections.synchronizedList方法設置)
get操作,非常慢(需要從head一級級遍歷查找)
- Vector
- 優點:
線程安全。
缺點:
相對于ArrayList效率要低。擁有ArrayList的缺點。
- CopyOnWriteArrayList
- 優點:
針對于對List操作的情況有很多變化時使用,優其是在高并發的情況不想使用同步控制鎖時
缺點:
消耗比較大的資料,每次作更新操作時,都會重新Copy一塊內存后,再做合并操作。
- TreeList(apache commons-collections)提供
-
優點:
基于二叉數 提供比較快速的get, add,insert,iterate,remove方法。其中get,add和iterate方法比ArrayList稍慢一點。
缺點:
相對于ArrayList和LinkedList占比較多的內存空間
線程不安全(需通過Collections.synchronizedList方法設置)
- Map
http://www.tkk7.com/xmatthew/archive/2008/10/25/236581.html