java - hashcode 和 equals 方法未被覆盖 - put 和 get 将如何工作?

标签 java hashmap equals hashcode

我有一个类(class) Student 和 Marks。 我正在使用 Student Object 作为 HashMap 的 Key 和 Marks 作为 Value。 如果我不覆盖 hashMap 和 equals,它仍然可以正常工作。

我。如果不覆盖 equals()hashcode(),有人能解释一下它在内部是如何工作的吗 二.如果我只覆盖 hashcode()

会怎么样

iii.如果我只覆盖 equals()

class Student {

    String name;
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    String lastName;

    Student(String name, String lastName){
        this.name = name;
        this.lastName = lastName;
    }
    public String toString(){
        return(" Name : " + this.getName() + " Last Name : " + this.getLastName());
    }
}
class Marks {
    Student s;
    String marks;
    public Student getS() {
        return s;
    }
    public void setS(Student s) {
        this.s = s;
    }
    public String getMarks() {
        return marks;
    }
    public void setMarks(String marks) {
        this.marks = marks;
    }
    Marks (Student s, String marks){
        this.marks = marks;
        this.s = s;
    }
    public String toString(){
        return(" Marks : " + this.getMarks());
    }
}



public class Main {
    public static void main(String[] args) {
        Student s1 = new Student("Vishnu","Verma");
        Student s2 = new Student("Amit","Sharma");

        Marks m1 = new Marks(s1,"65%");
        Marks m2 = new Marks(s2,"67%");

        Map <Student,Marks>map = new HashMap<Student,Marks>();
        map.put(s1, m1);
        map.put(s2, m2);

        System.out.println(map);
    }
}

最佳答案

如果对象的引用相等,它将认为对象相等。即它们指向同一个对象。

关于java - hashcode 和 equals 方法未被覆盖 - put 和 get 将如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376875/

相关文章:

java - 如何在每个以冒号结尾的单词之前添加换行符?

Java 类和扫描器

javascript - 如何在 JavaScript 中实现哈希表

c++ - 可以安全地依赖 unordered_map(hashmap)中的初始化值

Java Hashtable<Object, Someclass>,如果键是字符串?如果字符串相同,它将删除具有相同字符串的所有值

java - 想要一种用于像素编辑器的网格

java - 通过 JScrollPane 异常行为重新调度 MouseEvent

java - 使用 equals 方法测试 Java 中对象的相等性

java - toString() 将 java hashmap 中的 ":"更改为 "="

c# - GetHashCode 和 Equals 在 System.Attribute 中实现不正确?