1

我正在探索最常见的Java集合的各种方法、操作和先决条件,我有点困惑。如果有人能澄清以下主题,我将不胜感激:

1)为了使 a和 a正常工作,方法equals和绝对必要的实现,就像在 中那样?不实施以前的方法有什么潜在影响?我目前正在使用 TreeMap 和 TreeSet (自定义类对象),到目前为止它们工作正常,只需实现及其方法,省略和.hashCodeTreeSetTreeMapHashMapComparablecompareToequalshashCode

2)当在一个类equals甚至hashCode接口中实现Comparable时,是否所有派生类都可以在没有新定义和实现的情况下根据这些方法在集合中正常工作?我的印象是前者是正确的,因为给定的方法也属于派生类。什么最终是真的?

4

1 回答 1

2

为了让 TreeSet 和 TreeMap 像在 HashMap 中一样正常工作,是否绝对需要方法 equals 和 hashCode 的实现?

不。

不实施以前的方法有什么潜在影响?

没有任何。

在类中执行equals、hashCode甚至接口Comparable时,是否所有派生类都可以根据这些方法在集合中正常工作而无需新的定义和实现?

是的,让“正常工作”并不像听起来那么简单。通常,您希望所有相同类型的键或元素。混合它们的类型很少是一个好主意。

对于 TreeMap 和 TreeSet,您只需要实现 Comparable + compareTo 或 Comparator + compare。

于 2012-12-03T16:20:56.420 回答