gpt4 book ai didi

java - 从 java.util.Map 获取值

转载 作者:搜寻专家 更新时间:2023-11-01 01:43:34 24 4
gpt4 key购买 nike

我有Map<Date, String .我有两个日期对象 a, b那是平等的。我将一个字符串值放入与键 a 关联的映射中.然后我尝试获取与键关联的映射值 ab但只有a返回我输入的值。是否可以通过 b 获得我的值(value) key 。我知道当键是简单字符串时这是可能的。为什么这不适用于其他类型的对象?

public class Main {

public static void main(String[] args) {
Map<Date, String> map = new HashMap<Date, String>();

Date a = new Date(20131105);
Date b = new Date(20131105);

map.put(a, "sweet");

System.out.println(map.get(a));
System.out.println(map.get(b));
}

static class Date {
private int ymd;

public Date(int ymd) {
this.ymd = ymd;
}

public int getYmd() {
return ymd;
}

@Override
public boolean equals(Object obj) {
if (obj instanceof Date) {
return ((Date) obj).ymd == ymd;
}
return false;
}
}

输出是:

sweet
null

最佳答案

由于您使用 HashMap 来存储日期对象,因此您必须覆盖 hashCode() 方法,因为关键对象存储在数据结构中使用他们的哈希码。

非常基本的 hashCode() 覆盖(仅供说明):

@Override
public int hashCode(){
return ymd;
}

输出:

sweet
sweet

关于java - 从 java.util.Map 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19789739/

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