2013-10-31 48 views
0

我有一個下一個集合的功能問題,我真的知道java中TreeSet和HashSet之間的區別是什麼以及TreeMap和HashMap中。Java中的樹和哈希(集合圖)之間的差異

謝謝。

+0

我知道這些集合如何工作,但我想知道兩者之間的區別。謝謝 – jaavargasar

+1

閱讀每個班級的文檔。然後用更精煉的問題創建一個*不同的*帖子。 (我會想象知道他們是如何工作意味着知道差異,但..) – user2864740

+0

我知道如何創建這些集合,我怎麼可以填補,但我沒有看到差異,對我來說這些集合使同樣的事情。 – jaavargasar

回答

2

TreeMaps和TreeSet幾乎在每個方面都與HashMaps和HashSet類似,只是樹版本保持數據的排序順序(與未指定順序的Hash版本不同)。

使用TreeMap和TreeSet,您可以選擇使用內容的「自然」順序(假設內容實現了Comparable接口),或者您可以提供自己的比較器來爲您排序。

讓人驚訝的一個區別是,您可以將null存儲在HashMap和HashSet中,但不是(必須)存儲在TreeSet中或作爲TreeMap中的鍵。

1

哈希集比樹集快得多,但不提供排序保證。 樹集通過使用比較器(自然排序)組織樹中的數據,並且散列集組織散列表中的數據(使用散列函數)。 你還可以在Hash Set中存儲空值。雖然你不能在樹中存儲空集它會拋出異常空指針異常

+0

從技術上講,如果您使用自定義的「比較器」和「比較器」,您可以將null存儲在「TreeMap」或「TreeSet」一致處理'null'值:http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html#add(E) – rolfl