我定义了一个名为SetOb的简单私有类,其中包含一个int和一个Set数据结构。我在“主”方法中有一个 HashMap,其中SetOb作为键,整数作为值。现在,正如您在 main 方法中看到的那样,当我为 HashMap 提供一个SetOb实例,然后查找具有完全相同值的实例时,它返回“null”。在我使用自己定义的数据结构(如SetOb)作为 HashMap 中的 Key 之前,这种情况已经发生过好几次了。有人可以指出我错过了什么吗?请注意,在 SetOb 类的构造函数中,我复制了作为参数传递的 Set。
public class Solution {
public static Solution sample = new Solution();
private class SetOb {
public int last;
public Set<Integer> st;
public SetOb(int l , Set<Integer> si ){
last = l;
st = new HashSet<Integer>(si);
}
}
public static void main(String[] args) {
Map<SetOb, Integer> m = new HashMap< SetOb, Integer>();
Set<Integer> a = new HashSet<Integer>();
for(int i =0; i<10; i++){
a.add(i);
}
SetOb x = sample.new SetOb(100, a);
SetOb y = sample.new SetOb(100, a);
m.put(x,500);
Integer val = m.get(y);
if(val!= null) System.out.println("Success: " + val);
else System.out.println("Failure");
}
}