更新時(shí)間:2023年04月03日10時(shí)32分 來(lái)源:傳智教育 瀏覽次數(shù):
在Java中,hashCode()是Object類中的一個(gè)方法,用于返回一個(gè)對(duì)象的哈希碼(hash code),該哈希碼是一個(gè)int類型的數(shù)值,代表了該對(duì)象的特定標(biāo)識(shí)符。
哈希碼的主要作用是在集合中進(jìn)行元素的快速查找,比如在HashMap和HashSet中。這些集合內(nèi)部使用哈希表(hash table)來(lái)存儲(chǔ)元素,通過對(duì)象的哈希碼將元素映射到特定的桶(bucket)中。這樣,在查找元素時(shí),只需要先計(jì)算待查找元素的哈希碼,然后在對(duì)應(yīng)的桶中查找即可,大大提高了查找效率。
下面是一個(gè)簡(jiǎn)單的演示代碼,展示了如何重寫hashCode()方法,以及如何在HashMap中使用對(duì)象作為鍵值對(duì)。
import java.util.HashMap; class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public int hashCode() { return name.hashCode() + age; } // 省略 equals() 方法 public static void main(String[] args) { Person p1 = new Person("Alice", 20); Person p2 = new Person("Bob", 25); HashMap<Person, String> map = new HashMap<>(); map.put(p1, "Alice's value"); map.put(p2, "Bob's value"); System.out.println(map.get(p1)); // 輸出 "Alice's value" System.out.println(map.get(p2)); // 輸出 "Bob's value" } }
在上面的代碼中,Person類重寫了hashCode()方法,將name和age字段的哈希碼相加作為對(duì)象的哈希碼。然后在main()方法中創(chuàng)建了兩個(gè)Person對(duì)象,并將它們作為鍵值對(duì)存入HashMap中。由于這兩個(gè)對(duì)象的哈希碼不同,它們被映射到不同的桶中,因此在查找時(shí)可以快速定位到正確的元素。最后,通過get()方法獲取對(duì)象對(duì)應(yīng)的值,可以看到正確的結(jié)果被返回。
北京校區(qū)