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

歡迎訪問 生活随笔!

生活随笔

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

java

Java(ArrayList和LinkedList)、(HashTable与HashMap)、(HashMap、Hashtable、LinkedHashMap和TreeMap比较)

發布時間:2023/12/10 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java(ArrayList和LinkedList)、(HashTable与HashMap)、(HashMap、Hashtable、LinkedHashMap和TreeMap比较) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.ArrayList和LinkedList

(1)ArrayList是實現了基于動態數組的數據結構,LinkedList基于鏈表的數據結構。?
(2)對于隨機訪問get和set,ArrayList絕對優于LinkedList,因為LinkedList要移動指針。?
(3)對于新增和刪除操作add和remove,LinedList比較占優勢,因為ArrayList要移動數據。?
這一點要看實際情況的。若只對單條數據插入或刪除,ArrayList的速度反而優于LinkedList。但若是批量隨機的插入刪除數據,LinkedList的速度大大優于ArrayList. 因為ArrayList每插入一條數據,要移動插入點及之后的所有數據。

2.HashTable與HashMap

相同點:

(1)都實現了Map、Cloneable、java.io.Serializable接口。
(2)都是存儲"鍵值對(key-value)"的散列表,而且都是采用拉鏈法實現的。

不同點:

(1)歷史原因:HashTable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現 。
(2)同步性:HashTable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的 。
(3)對null值的處理:HashMap的key、value都可為null,HashTable的key、value都不可為null 。
(4)基類不同:HashMap繼承于AbstractMap,而Hashtable繼承于Dictionary。

????? Dictionary是一個抽象類,它直接繼承于Object類,沒有實現任何接口。Dictionary類是JDK 1.0的引入的。雖然Dictionary也支持“添加key-value鍵值對”、“獲取value”、“獲取大小”等基本操作,但它的API函數比Map少;而且Dictionary一般是通過Enumeration(枚舉類)去遍歷,Map則是通過Iterator(迭代M器)去遍歷。 然而由于Hashtable也實現了Map接口,所以,它即支持Enumeration遍歷,也支持Iterator遍歷。
????? AbstractMap是一個抽象類,它實現了Map接口的絕大部分API函數;為Map的具體實現類提供了極大的便利。它是JDK 1.2新增的類。
???
(5)支持的遍歷種類不同:HashMap只支持Iterator(迭代器)遍歷。而Hashtable支持Iterator(迭代器)和Enumeration(枚舉器)兩種方式遍歷。

3.HashMap、Hashtable、LinkedHashMap和TreeMap比較

???? Hashmap 是一個最常用的Map,它根據鍵的HashCode 值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。遍歷時,取得數據的順序是完全隨機的。HashMap最多只允許一條記錄的鍵為Null;允許多條記錄的值為Null;HashMap不支持線程的同步,即任一時刻可以有多個線程同時寫HashMap;可能會導致數據的不一致。如果需要同步,可以用Collections的synchronizedMap方法使HashMap具有同步的能力。

???? Hashtable 與 HashMap類似,不同的是:它不允許記錄的鍵或者值為空;它支持線程的同步,即任一時刻只有一個線程能寫Hashtable,因此也導致了Hashtale在寫入時會比較慢。

???? LinkedHashMap保存了記錄的插入順序,在用Iterator遍歷LinkedHashMap時,先得到的記錄肯定是先插入的,也可以在構造時用帶參數,按照應用次數排序。在遍歷的時候會比HashMap慢,不過有種情況例外,當HashMap容量很大,實際數據較少時,遍歷起來可能會比LinkedHashMap慢,因為LinkedHashMap的遍歷速度只和實際數據有關,和容量無關,而HashMap的遍歷速度和他的容量有關。如果需要輸出的順序和輸入的相同,那么用LinkedHashMap可以實現,它還可以按讀取順序來排列,像連接池中可以應用。LinkedHashMap實現與HashMap的不同之處在于,后者維護著一個運行于所有條目的雙重鏈表。此鏈接列表定義了迭代順序,該迭代順序可以是插入順序或者是訪問順序。對于LinkedHashMap而言,它繼承與HashMap、底層使用哈希表與雙向鏈表來保存所有元素。其基本操作與父類HashMap相似,它通過重寫父類相關的方法,來實現自己的鏈接列表特性。

???? TreeMap實現SortMap接口,內部實現是紅黑樹。能夠把它保存的記錄根據鍵排序默認是按鍵值的升序排序,也可以指定排序的比較器,當用Iterator 遍歷TreeMap時,得到的記錄是排過序的。TreeMap不允許key的值為null。非同步的。?

???? 一般情況下,我們用的最多的是HashMap,HashMap里面存入的鍵值對在取出的時候是隨機的,它根據鍵的HashCode值存儲數據,根據鍵可以直接獲取它的值,具有很快的訪問速度。在Map 中插入、刪除和定位元素,HashMap 是最好的選擇。
???? TreeMap取出來的是排序后的鍵值對。但如果您要按自然順序或自定義順序遍歷鍵,那么TreeMap會更好。
???? LinkedHashMap 是HashMap的一個子類,如果需要輸出的順序和輸入的相同,那么用LinkedHashMap可以實現,它還可以按讀取順序來排列,像連接池中可以應用。?

import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.TreeMap;public class MapTest {public static void main(String[] args) {//HashMapHashMap<String,String> hashMap = new HashMap();hashMap.put("4", "d");hashMap.put("3", "c");hashMap.put("2", "b");hashMap.put("1", "a");Iterator<String> iteratorHashMap = hashMap.keySet().iterator();System.out.println("HashMap-->");while (iteratorHashMap.hasNext()){Object key1 = iteratorHashMap.next();System.out.println(key1 + "--" + hashMap.get(key1));}//LinkedHashMapLinkedHashMap<String,String> linkedHashMap = new LinkedHashMap();linkedHashMap.put("4", "d");linkedHashMap.put("3", "c");linkedHashMap.put("2", "b");linkedHashMap.put("1", "a");Iterator<String> iteratorLinkedHashMap = linkedHashMap.keySet().iterator();System.out.println("LinkedHashMap-->");while (iteratorLinkedHashMap.hasNext()){Object key2 = iteratorLinkedHashMap.next();System.out.println(key2 + "--" + linkedHashMap.get(key2));}//TreeMapTreeMap<String,String> treeMap = new TreeMap();treeMap.put("4", "d");treeMap.put("3", "c");treeMap.put("2", "b");treeMap.put("1", "a");Iterator<String> iteratorTreeMap = treeMap.keySet().iterator();System.out.println("TreeMap-->");while (iteratorTreeMap.hasNext()){Object key3 = iteratorTreeMap.next();System.out.println(key3 + "--" + treeMap.get(key3));}}}

輸出結果:

HashMap--> 3--c 2--b 1--a 4--d LinkedHashMap--> 4--d 3--c 2--b 1--a TreeMap--> 1--a 2--b 3--c 4--d 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Java(ArrayList和LinkedList)、(HashTable与HashMap)、(HashMap、Hashtable、LinkedHashMap和TreeMap比较)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 无码人妻精品一区二区三区9厂 | 在线不卡的av | 黑人vs亚洲人在线播放 | 国产精品美乳在线观看 | 91传媒在线免费观看 | 久久大香焦 | 国产欧美视频一区二区三区 | 免费成年人视频在线观看 | 国产1级片 | 欧美熟妇精品一区二区蜜桃视频 | 国产每日更新 | h成人在线 | 国产视频第一区 | 99热黄色| 青草青青视频 | 久操免费在线 | 91av在线网站 | 黄色网www| 毛片在线视频观看 | 国产suv一区二区 | 欧美日韩一二区 | gai视频在线观看资源 | 91国产丝袜播放在线 | av免费在线观看网站 | 亚洲狼人综合网 | aaa色| 成人涩涩网站 | 麻豆国产在线 | 精品综合久久久 | 成人自拍网 | 亚洲一区二区视频在线 | 小明成人免费视频 | 免费成人黄色av | 黑丝av在线| 大肉大捧一进一出好爽视频 | 亚洲人成影视 | 欧洲精品码一区二区三区免费看 | 精品欧美一区二区三区 | 男女日批 | 国产美女福利 | 午夜诱惑痒痒网 | 少妇av片 | 久久婷婷国产麻豆91 | 婷婷色av| 五月激情六月丁香 | 成年人网站免费 | 亚洲天堂精品在线观看 | 成人国产一区 | 精品美女一区 | 色吊妞| 少妇被又大又粗又爽毛片久久黑人 | 亚洲国产成人一区二区 | 无码精品国产一区二区三区免费 | 加勒比一区二区三区 | av十大美巨乳 | 97精品在线视频 | 又黄又爽又色视频 | 久久综合色综合 | 亚洲精品国产福利 | 亚洲中国色老太 | 黑人性xxx | 成人免费视频大全 | 久久无码人妻精品一区二区三区 | 成年人免费看视频 | 国产精品100| 丝袜中文字幕 | 国产精品一区二区人妻喷水 | 五月天堂婷婷 | av影库| 久久中文字幕人妻 | 色汉综合| 99精品久久久久 | 日本在线不卡一区二区三区 | 关之琳三级全黄做爰在线观看 | 黄色一级片国产 | 成人在线免费视频观看 | 国产成人精品av | 黄色网在线 | 美女自拍偷拍 | 欧美熟妇久久久久 | 日本少妇在线 | 亚洲精品伊人 | 夜夜骑夜夜操 | 成人资源站 | 国产精品美女www | 免费人成年激情视频在线观看 | 日本在线不卡一区 | 亚洲国产精品福利 | 久久午夜鲁丝 | 中文字幕天堂网 | 日韩在线观看免费网站 | 青青青视频在线 | 久草视频资源 | 黄网站在线免费 | 亚洲免费福利视频 | 超碰公开免费 | 国精产品99永久一区一区 | 末路1997全集免费观看完整版 | 国产三级做爰高清在线 |