我正在探索最常见的Java集合的各种方法,操作和先决条件,我有点困惑。如果有人能澄清以下主题,我将非常感激:
1)是否绝对需要方法equals
和hashCode
的实施,以使TreeSet
和TreeMap
正常工作,因为它在{ {1}}?不实施以前的方法有什么潜在的影响?我正在使用TreeMap和TreeSet(自定义类对象),到目前为止它们工作正常,只需实现HashMap
及其方法Comparable
,省略compareTo
和{{ 1}}。
2)当在类equals
,hashCode
或甚至接口equals
中强制实施时,所有派生类在没有新定义的情况下根据这些方法在集合中正常工作就足够了implementantion?我的印象是前者是正确的,因为给定的方法也属于派生的classe。什么是最终的真实?
答案 0 :(得分:2)
方法的实现是否必须和hashCode绝对必需,以使TreeSet和TreeMap正常工作,就像在HashMap中一样?
没有
不实施以前的方法有什么潜在的影响?
无
当一个类中的impelmenting等于hashCode甚至是Comparable接口时,所有派生类是否足以根据这些方法在集合中正常工作而没有新的定义和实现?
是的,让“正常工作”并不像听起来那么简单。通常,您希望键或元素具有相同的类型。混合他们的类型很少是个好主意。
对于TreeMap和TreeSet,您只需要实现Comparable + compareTo OR Comparator + compare。