日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java中常用集合类对比_集合比较

發布時間:2023/12/3 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java中常用集合类对比_集合比较 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
集合實現類集合接口有序性唯一性線程安全空值性能排序數據結構索引應用場景備注
ArrayListList有序可重復不安全允許空值查找效率高,添加/刪除效率低使用 Collections.sort() 傳入ArrayList,會采
用默認的方式進行排序(字典序)。
自己實現 Comparator 接口,再使用 Collections.sort() 來
實現自定義排序
數組下標索引適合快速隨機查找和遍歷,不適合插入和刪除,當操作是在一列數據的后面添加數據而不是在前面或者中間,并需要隨機地訪問其中的元素時,使用ArrayList性能比較好數組空間不夠,ArrayList默認擴展50%的大小。
VectorList有序可重復安全允許空值查找效率高,添加/刪除效率低-數組下標索引-可以看做線程安全ArrayList,已棄用,由 CopyOnWriteArrayList 或者 Collections.synchronizedList 替代
LinkedListList有序可重復不安全允許空值查找效率底,添加/刪除效率高-雙向鏈表下標索引當對一列數據的前面或者中間執行添加或者刪除操作時,并且按照順序訪問其中的元素時,要使用LinkedListLinkedList 提供了List接口中沒有定義的方法,專門用于操作表頭和表尾元素,可以當作堆棧、隊列和雙向隊列使用
StackList有序可重復安全允許空值查找效率高,添加/刪除效率低,整體效率低-無索引-繼承自Vector,堆棧,后進先出,已棄用,由 ArrayDeque 或者 ConcurrentLinkedQueue 替代
HashMapMap無序,無法保證鍵值對的順序key不可重復,value可重復,使用 hashCode 與 equals 方法保證key不重復不安全允許空值,key允許一個null,value允許多個nullHashMap通常比TreeMap、LinkedHashMap 快,不過有種情況例外,當HashMap容量很大,實際數據較少時,遍歷起來可能會比 LinkedHashMap 慢-JDK7:數組+鏈表;JDK8:數組+鏈表+紅黑樹無索引場景遍歷使用的是Iterator迭代器,系統調用key的 hashCode() 方法得到其 hashCode 值,得到這個對象的 hashCode 值之后,系統會根據該 hashCode 值來決定key—value的存儲位置
HashtableMap無序,無法保證鍵值對的順序key 不可重復,value 可重復,使用 hashCode 與 equals 方法保證 key 不重復安全不允許空值整體效率低-哈希表無索引-遍歷使用的是 Enumeration 列舉
TreeMapMap有序key 不可重復,value 可重復,使用
hashCode 與 equals 方法保證 key 不重復
不安全key不可以,value可以TreeMap通常比HashMap、Hashtable要慢,
因為TreeMap底層采用紅黑樹來管理key-value。
整體效率低
1. 自然排序:TreeMap 的所有 key 必須實現 Comparable 接口,而且所有的 key 應該是同一個類的對象,否則會拋出ClassCastException。
2.定制排序:創建TreeMap時,傳入一個 Comparator 對象,該對象負責對TreeMap中的所有key進行排序。
紅黑樹無索引需要基于key排序的場景-
LinkedHashMapMap有序(可分為插入順序和訪問順序兩種)key 不可重復,value 可重復,使用 hashCode() 與 equals() 方法保證 key 不重復不安全key不可以,value可以LinkedHashMap比HashMap慢一點,因為它需要鏈表來維護key-value的插入順序。整體效率低-基于HashMap和雙向鏈表來實現無索引當我們希望有順序地去存儲 key-value時,就需要使用 LinkedHashMap雙向鏈表用來維護順序
WeakHashMapMap無序,無法保證鍵值對的順序key 不可重復,value 可重復,使用 hashCode 與 equals 方法保證 key 不重復不安全允許空值,key允許一個null,value允許多個null--哈希表(數組+鏈表)無索引適用于緩存的場景-
EnumMapMap無序,無法保證鍵值對的順序key 不可重復,value 可重復不安全允許空值,key允許一個null,value允許多個null相比HashMap,EnumMap的性能和速度要快很多-數組有索引(通過ordinal方法取索引)--
IdentityHashMapMap無序,無法保證鍵值對的順序key 可重復,value 可重復,使用 hashCode 與 equals 方法保證 key 不重復不安全允許空值,key允許一個null,value允許多個null速度要比HashMap快一點-哈希表(數組+鏈表)無索引比如序列化、深度復制、記錄對象代理等場景;兩個對象是同一個類型的對象,而且兩個對象的數據完全相同,對于jvm來說,他們也是完全不同的,如果要用一個容器來記錄這樣的對象,就需要用 IdentityHashMapIdentityHashMap中key能重復,因為 key 比較的方法是 ==,所以若要存放兩個相同的 key,就需要存放不同的地址
PropertiesMap無序,無法保證鍵值對的順序key 不可重復,value 可重復,使用 hashCode 與 equals 方法保證 key 不重復不安全不允許存null--哈希表無索引配置文件Properties類表示一組持久的屬性。 Properties可以保存到流中或從流中加載。 屬性列表中的每個鍵及其對應的值都是一個字符串
TreeSetCollection有序不可重復,同樣需要重寫 hashCode 和 equals 方法,TreeSet 判斷兩個對象不相等的方式是兩個對象通過 equals 方法返回 false,或者通過 compareTo 方法比較沒有返回 0不安全不允許空值查找效率高,添加/刪除效率低,整體效率高1.自然排序,使用 compareTo 方法來比較元
素之間大小關系,然后將元素按照
升序排列。2.定制排序,實現 Comparator
接口的compareTo 方法
紅黑樹,基于 TreeMap 實現無索引需要排序的場景只能添加同一種類型的對象
HashSetSet無序(即存取順序不一致)不可重復,使用 hashCode() 與 equals() 方法保證 key 不重復不安全允許存null,只能存1個null具有良好的存取和查找性能,其性能通常都優于 TreeSet-哈希表(數組+鏈表),基于 HashMap 實現無索引需要快速查找的場景-
LinkedHashSetSet有序不可重復不安全允許空值LinkedHashSet 插入性能略低于 HashSet,但在迭代訪問 Set 里的全部元素時有很好的性能-雙向鏈表和哈希表,基于 LinkedHashMap 實現無索引-鏈表保證了元素的順序與存儲順序一致,哈希表保證了元素的唯一性
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Java中常用集合类对比_集合比较的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。