java 集合類Collection及Map 常用類

集合

Collection

        |---List :元素是有序的,元素可以重複。因爲此集合類有索引。

                |--ArrayList:(線程不同步)底層的數據結構使用的是數組結構,查找數據的速度較快。但是增刪的操作稍慢,元素多的時候越明顯。

                |--LinkedList:底層數據用的是鏈表數據結構。特點:增刪速度很快,查詢稍慢。

                |--Vector:(線程同步)被ArrayList代替了

                       |-- Stack 棧 後進先出 LIFO 線程安全,支持push(),top(),pop().

        |---Set :元素無序,元素不可以重複。

               |--HashSet:底層數據是哈希表,元素是無序的。添加、刪除操作時間複雜度都是O(1)

                         |--LinkedHashSet 元素是有序的,是介於HashSet 和 TreeSet之間,內部是一個雙向鏈表結構。

                    HashSet是如何保證元素的唯一性的呢?

                  是通過元素的倆個方法,hashCode和equals來完成的。如果元素的HashCode值相同,就去判斷equals是否爲ture。如果HashCode值不同,就不再判斷 equals                       

              |--TreeSet  內部結構是一個樹結構(紅黑樹),元素是有序的,添加、刪除操作時間複雜度爲O(log(n)),並且提供了first(), last(), headSet(), tailSet()等方法來處理有序集合。

              |--EnumSet 元素都是枚舉對象有序,使用位向量的形式存儲,佔用內存小,運行高效,不允許存儲null。

       |--- Queue 隊列 FIFO

                |--Deque 雙端隊列 查詢效率相比單項隊列高 

                          |--LinkedList 元素是有序的,雙向鏈表結構,增刪快,隨機查詢和遍歷較慢。

                          |--ArrayDeque 元素有序,數組結構,增刪慢,隨機查詢和遍歷較快。

                |--PriorityQueue 元素有序,但是不是按照插入順序先進先出,而是按照大小排列,並非嚴格意義刪的隊列順序

Map

    |--- HashTable 元素無序,key不能爲null,線程安全

    |--- HashMap 元素無序,key和value 可以爲null ,線程非安全。

               |--- LinkedHashMap 元素按按插入前後排序,比HashMap 插入稍慢,由於是鏈表結構迭代順序會快。

    |--- AbstractMap 

                 |--- TreeMap 元素是有序的,基於紅黑樹實現。該ßß映射根據其鍵的自然順序進行排序,或者根據創建映射時提供的 Comparator 進行排序,具體取決於使用的構造方法。

 

       

                                                                                        

 

 

 

   

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