java常用容器詳細介紹


             Collection --Queue --優先級隊列/數組實現的隊列                                              Map    --WeakedHashMap

        /                           \                                /              \

   List                           Set                            HashMap TreeMap

   /        \                      /     \                          |

ArrayList LinkedList    HashSet  TreeSet                  LinkedHashMap

                              |

                  LinkedHashSet

兩個可以進行比較的接口的區別:

Comparable:需要比較對象實現該接口,有CompareTo()方法。

Comparator:比較器,使比較器類實現該接口,將要比較的對象傳到這個實現類的對象中。

第二個更好一些,它相當於一個工具類,第一個對要比較的對象耦合度較高。

 

Collection:接口  里面包含常用的方法,add().remove() contains() isEmpty()等基礎方法。

List:元素在序列中,根據索引對序列特定位置進行操作,重寫的方法中要傳入索引index值。

Arraylist:底層是數組實現的List容器,查找效率高,默認容量是10,擴容1.5倍,在底層new一個1.5倍容量的數組進行擴容。

LinkedList:鏈表實現的,對刪除和存入效率很高。

Set:方法和Collection完全相同,確保容器內元素唯一,根據這個特性可以用來查找。

HashSet:HashSet底層持有一個HashMap,key就是存儲的值,value是統一的一個值,HashSet中的各種方法實際上是調用HashMap相應的方法實現的。

TreeSet:持有一個TreeMap。

LinkedHashSet:底層是LinkedHashMap。

Map:存儲的是鍵值對。

HashMap:層是Hash表來實現的Set,在add()方法中調用,contains()方法,cotains方法會根據對象的hashcode判斷在哪個桶內,然后調用equals方法和桶內其他元素比較如果相同就要插入失敗。

LinkedHashMap:底層是Hash表和雙向鏈表,繼承HashMap,持有的Entry類繼承了HashMap中的類,並且多了before,after兩個引用,分別指向hash表中自己節點的前驅和后繼,有序方式分為兩種,一種是插入時的順序,一種是訪問順序(通過get方法等),有一個標志位來切換兩種順序。

TreeMap:底層是紅黑樹實現的Map,樹的節點存儲的是Entry,遍歷時是有序的,順序是底層定義的比較器所比較的順序。

 

Hash表:桶的數量要選擇2的整數次冪,因為確定一個對象所在的桶需要使用,Hashcode%桶數得到,而除法和求余操作對於處理器來說是最慢的,而二的整數次冪可用掩碼代替除法。

 


免責聲明!

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



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