簡體   English   中英

Java HashMap.get(key)和TreeMap.get(key)的equals和compareTo方法的用法

[英]Java HashMap.get(key) and TreeMap.get(key) usage of equals and compareTo methods

我有一張地圖,該地圖使用我創建的類作為鍵。 該類覆蓋equals和compareTo方法。 有人可以具體說明Hashmap.get(key)和TreeMap.get(key)如何使用這些方法嗎?

Hashmap.get(key)導致調用鍵對象的哈希碼,並在使用哈希碼確定存儲桶之后,然后在鍵上調用equals以確定鍵的值。

TreeMap是SortedMap的實現,這意味着存儲在樹圖中作為鍵的對象應實現Comparable接口,否則我們需要將Comparator<T> (其中T是鍵類)對象發送給TreeMap的構造函數。 原因是對鍵進行了排序。 排序JVM需要知道如何進行比較,因此要了解此限制。如果您的鍵類實現Comparable接口,則將調用此接口的compareTo方法實現。 這里有一個綁定協定,規定鍵類的compareTo和equals方法應該兼容,這意味着compareTo應該重新調零,並且equals應該對於兩個相等的鍵對象返回true,這樣TreeMap的鍵將是唯一的。

簡而言之,

HashMap.get(key)調用key的hashCode方法,然后調用key的equals方法

TreeMap.get(key)調用您的鍵類的compareTo方法或調用您將傳遞給TreeMap構造函數的Comparator對象的compare方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM