教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

hashcode是什么?有什么作用?

更新時(shí)間:2023年04月03日10時(shí)32分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)

  在Java中,hashCode()是Object類(lèi)中的一個(gè)方法,用于返回一個(gè)對(duì)象的哈希碼(hash code),該哈希碼是一個(gè)int類(lèi)型的數(shù)值,代表了該對(duì)象的特定標(biāo)識(shí)符。

  哈希碼的主要作用是在集合中進(jìn)行元素的快速查找,比如在HashMap和HashSet中。這些集合內(nèi)部使用哈希表(hash table)來(lái)存儲(chǔ)元素,通過(guò)對(duì)象的哈希碼將元素映射到特定的桶(bucket)中。這樣,在查找元素時(shí),只需要先計(jì)算待查找元素的哈希碼,然后在對(duì)應(yīng)的桶中查找即可,大大提高了查找效率。

hashcode是什么?有什么作用?

  下面是一個(gè)簡(jiǎn)單的演示代碼,展示了如何重寫(xiě)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類(lèi)重寫(xiě)了hashCode()方法,將name和age字段的哈希碼相加作為對(duì)象的哈希碼。然后在main()方法中創(chuàng)建了兩個(gè)Person對(duì)象,并將它們作為鍵值對(duì)存入HashMap中。由于這兩個(gè)對(duì)象的哈希碼不同,它們被映射到不同的桶中,因此在查找時(shí)可以快速定位到正確的元素。最后,通過(guò)get()方法獲取對(duì)象對(duì)應(yīng)的值,可以看到正確的結(jié)果被返回。

0 分享到:
和我們?cè)诰€交談!