教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

hashcode是什么?有什么作用?

更新时间:2023年04月03日10时32分 来源:传智教育 浏览次数:

好口碑IT培训

  在Java中,hashCode()是Object类中的一个方法,用于返回一个对象的哈希码(hash code),该哈希码是一个int类型的数值,代表了该对象的特定标识符。

  哈希码的主要作用是在集合中进行元素的快速查找,比如在HashMap和HashSet中。这些集合内部使用哈希表(hash table)来存储元素,通过对象的哈希码将元素映射到特定的桶(bucket)中。这样,在查找元素时,只需要先计算待查找元素的哈希码,然后在对应的桶中查找即可,大大提高了查找效率。

hashcode是什么?有什么作用?

  下面是一个简单的演示代码,展示了如何重写hashCode()方法,以及如何在HashMap中使用对象作为键值对。

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字段的哈希码相加作为对象的哈希码。然后在main()方法中创建了两个Person对象,并将它们作为键值对存入HashMap中。由于这两个对象的哈希码不同,它们被映射到不同的桶中,因此在查找时可以快速定位到正确的元素。最后,通过get()方法获取对象对应的值,可以看到正确的结果被返回。

0 分享到:
和我们在线交谈!