有以下代码:
class Value {
int i;
public boolean equals(Value v) {
return v.i ==i;
}
}
import java.util.HashSet;
public class Test {
public static void main(String[] args) {
HashSet<Value> set = new HashSet<Value>();
Value v1 = new Value();
Value v2 = new Value();
v1.i = v2.i=39;
set.add(v1);
set.add(v2);
System.out.println(set.size());
}
}
以下哪句是正确的?
A.无法编译
B. 通过编译,打印出 1
C. 通过编译,打印出 2
D. 通过编译,但是运行的时候出错,说“set.add(v2);”这行试图加入一个已经存在的值
运行结果是C 答案给出的B
哪里出问题了?
你应该哪里有插入的地方
这个问题是为了验证hashSet在添加时会去重的特性,需要重写equals和hashCode方法 建议检索相关方面的内容,同时方法重写的时候,上面会有@Override
,如果报错的话,建议检查方法参数类型