gpt4 book ai didi

java - 为什么 hashmap 在这里不返回 null

转载 作者:行者123 更新时间:2023-12-03 06:45:12 25 4
gpt4 key购买 nike

您好,我正在准备 OCP 考试,我对 HashMap 有疑问。在这里,我用 (thirdStudent, "3") 替换了我的第一个键值 (firstStudent, "1") 对

package hashmapexam;

import java.util.HashMap;
import java.util.Map;

public class HashMapExam {

public static void main(String[] args) {
Student firstStudent = new Student("Rob");
Student secondStudent = new Student("Catlin");
Student thirdStudent = new Student("Rob");

Map <Student,String> students = new HashMap<>();

students.put(firstStudent, "1");
students.put(secondStudent, "2");
students.put(thirdStudent, "3");

System.out.println("Size of the Map : " + students.size());

System.out.println(students.get(firstStudent));
System.out.println(students.get(secondStudent));
System.out.println(students.get(thirdStudent));
}
}
<小时/>
package hashmapexam;

class Student{

String name;

public Student(String name){
this.name = name;
}

public String getName(){
return name;
}

@Override
public boolean equals(Object o){
if(o instanceof Student && ((Student)o).getName().equals(this.getName())){
return true;
}
else{
return false;
}
}

@Override
public int hashCode(){
return name.length();
}
}

我得到以下输出

Size of the Map : 2

3

2

3

由于 map 的大小为 2,它们似乎已被正确替换。但是它如何使用firstStudent 和thirdStudent 键检索值“3”? FirstStudent key 不会被 ThirdStudent 替换吗?

最佳答案

firstStudentthirdStudent相等。这意味着您可以使用任一引用作为键来获取相应的值。

顺便说一句,使用 Stringlength 对于 hashCode 方法来说是一个糟糕的主意,因为它会导致许多不同的常见问题名称具有相同的hashCode。最好使用StringhashCode

关于java - 为什么 hashmap 在这里不返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31858451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com