Java中树和哈希(集合映射)之间的区别

时间:2013-10-31 23:49:50

标签: java hashmap hashset treemap treeset

我对下一个集合的功能有疑问,我真的知道在Java中TreeSet和HashSet之间的区别是什么,以及TreeMap和HashMap之间有什么区别。

感谢。

2 个答案:

答案 0 :(得分:2)

TreeMaps和TreeSet几乎在每个方面都与HashMaps和HashSets类似,只是Tree版本以排序的顺序保存数据(与未指定顺序的Hash版本不同)。

使用TreeMap和TreeSet,您可以选择使用内容的“自然”顺序(假设内容实现了Comparable接口),或者您可以提供自己的Comparator来为您进行排序。

让人惊讶的一个区别是你可以将null存储在HashMap和HashSet中,但不能(必然)存储在TreeSet中或作为TreeMap中的键。

答案 1 :(得分:1)

散列集比树集快得多但不提供排序保证。 树集通过使用比较器(自然排序)在树中组织数据,并且哈希集在散列表中组织数据(使用散列函数)。 还有一件事可以在Hash Set中存储空值。虽然你不能在树集中存储null,但它会抛出异常空指针异常