哈希集是使用哈希表实现的。元素未排序。和 包含方法具有恒定的时间复杂度 O(1)。.add, remove,
TreeSet是使用树结构(算法书中的红黑树)实现的。对集合中的元素进行排序,但添加、删除和包含方法具有时间复杂度 O(log (n))。它提供了几种处理有序集的方法,如 等。first(), last(), headSet(), tailSet()
1)与性能之间的第一个主要区别。 比不需要对元素进行排序时更快,并且应该是首选。HashSet
TreeSet
HashSet
TreeSet
2)第二个区别和是允许空对象,但不允许空对象和抛出,为什么,因为使用方法比较键并会抛出。HashSet
TreeSet
HashSet
TreeSet
NullPointerException
TreeSet
compareTo()
compareTo()
java.lang.NullPointerException
3) 和 之间的另一个显著区别是 ,由 Java 中的 NavigableMap 支持 while 支持。HashSet
TreeSet
HashSet
HashMap
TreeSet
4)两者之间的另一个区别是,值得记住的是,HashSet使用方法来比较Set中的两个对象,并在将方法用于相同目的时检测重复项。如果 和 不一致,即对于两个相等的对象,等于应返回 true,而应返回零,那么它将破坏 Set 接口的契约,并允许在 Set 实现(如 TreeSet)中重复HashSet
TreeSet
equals()
TreeSet
compareTo()
equals()
compareTo()
compareTo()
5)现在最重要的区别是和排序。 不保证任何顺序,同时以 Java 中的任一或方法定义的排序顺序维护对象。HashSet
TreeSet
HashSet
TreeSet
Comparable
Comparator
6) 不允许插入对象。如果试图添加雌激素物体,它会投掷,而允许雌激素物体。TreeSet
Heterogeneous
classCastException
Runtime
HashSet