Bab*_*ani 6 java collections contains set hashset
我执行下面的代码,发现输出是false
.
import java.util.Set;
import java.util.HashSet;
public class Name {
private String first, last;
public Name(String first, String last) {
this.first = first;
this.last = last;
}
public boolean equals(Object o) {
if (!(o instanceof Name))
return false;
Name n = (Name) o;
return n.first.equals(first) && n.last.equals(last);
}
public static void main(String[] args) {
Set<Name> s = new HashSet<Name>();
s.add(new Name("Donald", "Duck"));
System.out.println(s.contains(new Name("Donald", "Duck")));
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道它的行为和输出的原因false
.
您还需要覆盖hashCode()
方法equals()
.这两种方法都用于正确的功能HashSet
,所以必须在用户定义的类中重写,如果你把它class
作为一个key
,其他hashCode()
的Object
类被使用,没有两个不同objects
可以被认为是相同的,因为它们hashCode()
总是不同的,并且肯定false
会在以下情况下返回contains()
.
归档时间: |
|
查看次数: |
2649 次 |
最近记录: |