HashSet<int[]> a = new HashSet<int[]>();
int[] somestuff = {1, 2, 3};
a.add(somestuff);
int[] somestuff2 = {1, 2, 3};
System.out.println(a.contains(somestuff2));
是false
。
如何正确检查?只有当我检查somestuff
时才会得到真实,但即使变量名/文字不相同,但值是,我想得到true
。什么方法调用允许我完成这个?我想检查价值......
也许它与集合中散列的内容有关,也依赖于最初用于填充它的变量文字
答案 0 :(得分:1)
没有直接简单的方法来做你想做的事,但是......
我会创建一个由int[]
字段组成的类,并根据数组的内容实现equals()
和一致的hashCode()
。
如果此类对象可以使用,则为Set
:
Set<MyClass> s;
MyClass o;
boolean b = s.contains(o);
答案 1 :(得分:0)
你不能通过调用a.contains()方法来做到这一点。你必须迭代哈希表并检查值,因为两个数组是相同的。