[英]Requirements of TreeMap / TreeSet
我正在探索最常見的 Java 集合的各種方法、操作和先決條件,我有點困惑。 如果有人能澄清以下主題,我將不勝感激:
1) 為了使TreeSet
和TreeMap
正常工作,是否絕對需要方法equals
和hashCode
的實現,就像在HashMap
? 不實施以前的方法有什么潛在影響? 我目前正在使用 TreeMap 和 TreeSet(自定義類對象),到目前為止它們工作正常,只需實現Comparable
及其方法compareTo
,省略equals
和hashCode
。
2)當在類中實現equals
、 hashCode
甚至接口Comparable
,是否足以讓所有派生類根據那些沒有新定義和實現的方法在集合中正常工作? 我的印象是前者是對的,因為給定的方法也屬於派生類。 最后什么是真的?
是否絕對需要實現方法 equals 和 hashCode,以便 TreeSet 和 TreeMap 正常工作,就像在 HashMap 中一樣?
不。
不實施以前的方法有什么潛在影響?
沒有任何。
當在類中實現 equals、hashCode 甚至接口 Comparable 時,是否足以讓所有派生類根據這些方法在集合中正常工作而無需新的定義和實現?
是的,讓“正常工作”並不像聽起來那么簡單。 通常,您希望所有的鍵或元素都具有相同的類型。 混合它們的類型很少是一個好主意。
對於 TreeMap 和 TreeSet,您只需要實現 Comparable + compareTo 或 Comparator + compare。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.