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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HashMap, LinkedHashMap 和 TreeMap的区别

發布時間:2023/11/29 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HashMap, LinkedHashMap 和 TreeMap的区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

HashMap, LinkedHashMap 和 TreeMap的區別

Java里面的HashMap, LinkedHashMap 和 TreeMap 有什么區別?我看不出以下3個key和value有什么不同的。Hashtables里面又是怎么樣的呢?

Map m1 = new HashMap(); m1.put("map", "HashMap"); m1.put("schildt", "java2"); m1.put("mathew", "Hyden"); m1.put("schildt", "java2s"); print(m1.keySet()); print(m1.values()); SortedMap sm = new TreeMap(); sm.put("map", "TreeMap"); sm.put("schildt", "java2"); sm.put("mathew", "Hyden"); sm.put("schildt", "java2s"); print(sm.keySet()); print(sm.values());LinkedHashMap lm = new LinkedHashMap(); lm.put("map", "LinkedHashMap"); lm.put("schildt", "java2"); lm.put("mathew", "Hyden"); lm.put("schildt", "java2s"); print(lm.keySet()); print(lm.values());

回答一

所有這三個類都實現Map接口,并且提供功能大部分都是一樣的。最重要的區別是通過entry進行迭代的順序:

  • HashMap完全不保證迭代的順序。它可以完全改變元素添加的順序
  • TreeMap會根據 key的compareTo() 方法(或者是一個外部的比較器) 來實現一個自然順序 進行迭代,另外他實現了SortedMap接口(含有依賴于這個排序順序的方法)
  • LinkedHashMap將會按entry插入map的順序進行迭代

“Hashtable” 是 基于hash的映射的一個通用名字。在Java 的API里面,Hashtable是一個來自于Java1.1版本,在集合框架存在之前的已經過時的類了。他不應該再次被使用了,因為他的API里面充斥著各種過時的方法和重復的功能。并且他的方法是基于synchronized的(可能會降低性能并且通常來說是用不到的)。用ConcurrentHashMap去替代它吧。

回答二

這3個都是唯一的key到一個value的映射,故而都實現了map接口

  • HashMap是一個基于key的哈希映射。它支持 O(1) 時間復雜度的get/put操作。key一定要一致地實現hashCode() 和 equals()方法,這樣才能使得HashMap可以正常工作。

  • LinkedHashMap和HashMap很像,但是它添加對于元素插入順序的保存,所以他的迭代順序是和插入順序相同的(或者是訪問順序,取決于構造器的參數)

  • TreeMap是一種基于樹的映射。它的put/get操作需要O(log n)的時間復雜度。它要求item的元的Comparable or Comparator有相同的比較機制。而它的迭代次序就是基于這個機制的。

文章翻譯自Stack Overflow:https://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhashmap-and-treemap

總結

以上是生活随笔為你收集整理的HashMap, LinkedHashMap 和 TreeMap的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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