gpt4 book ai didi

java - 使用两个(或更多)对象作为 HashMap 键

转载 作者:搜寻专家 更新时间:2023-10-30 20:58:16 24 4
gpt4 key购买 nike

我想将某些对象存储在 HashMap 中。问题是,通常您只使用单个对象作为键。 (例如,您可以使用一个字符串。)我想要使用多个对象来做什么。例如,一个类和一个字符串。有没有一种简单明了的方法来实现它?

最佳答案

您的 key 必须实现 hashCode 和 equals。如果是SortedMap,还必须实现Comparable接口(interface)

public class MyKey implements Comparable<MyKey>
{
private Integer i;
private String s;
public MyKey(Integer i,String s)
{
this.i=i;
this.s=s;
}

public Integer getI() { return i;}
public String getS() { return s;}

@Override
public int hashcode()
{
return i.hashcode()+31*s.hashcode();
}

@Override
public boolean equals(Object o)
{
if(o==this) return true;
if(o==null || !(o instanceof MyKey)) return false;
MyKey cp= MyKey.class.cast(o);
return i.equals(cp.i) && s.equals(cp.s);
}

public int compareTo(MyKey cp)
{
if(cp==this) return 0;
int i= i.compareTo(cp.i);
if(i!=0) return i;
return s.compareTo(cp.s);
}


@Override
public String toString()
{
return "("+i+";"+s+")";
}

}

public Map<MyKey,String> map= new HashMap<MyKey,String>();
map.put(new MyKey(1,"Hello"),"world");

关于java - 使用两个(或更多)对象作为 HashMap 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1190049/

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