2012-12-03 17 views
1

我在探索最常见的Java集合的各种方法,操作和先决条件,我有点困惑。我会很感激,如果有人能澄清以下主题:TreeMap/TreeSet的要求

1)是的方法equals和实现hashCode绝对需要,为了使TreeSetTreeMap正常工作,因为它是在HashMap?不执行以前的方法有什么潜在的影响?我正在使用TreeMap和TreeSet(自定义类对象),并且它们迄今为止工作良好,只需执行Comparable及其方法compareTo,即可省略equalshashCode

2)当在一个类equals,或hashCode甚至接口Comparable impelmenting,是它足够用于所有派生类对在根据没有新定义和implementantion那些方法集合正常工作?我有一个印象,前者是正确的,因为给定的方法也属于派生类。什么是最后的真实?

+0

设置与Map不同,将它分成两个问题我猜是好的。 – kosa

回答

2

为了使TreeSet和TreeMap能够正常工作,就像在HashMap中那样,是否需要equals和hashCode方法的实现?

没有。

不执行以前方法的潜在影响是什么?

无。

当在一个类中推动equals,hashCode甚至是Comparable接口时,是否足够让所有派生类在集合中正常工作,而不需要新的定义和实现?

是的,使“正常工作”并不像听起来那么简单。通常你想要的键或元素都是相同的类型。混合他们的类型很少是一个好主意。

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