List.contains()在equals()的情况下失败。 注意:此翻译不包含HTML标签和引号或双引号内的内容。
- 论坛
- List.contains()在equals()的情况下失败。 注意:此翻译不包含HTML标签和引号或双引号内的内容。
11 浏览
List.contains()在equals()的情况下失败。 注意:此翻译不包含HTML标签和引号或双引号内的内容。
我有一个使用字符串作为等价检查的Test
对象的ArrayList
。我想要使用List.contains()
来检查列表是否包含使用特定字符串的对象。
简单来说:
Test a = new Test("a"); a.equals("a"); // True Listtest = new ArrayList (); test.add(a); test.contains("a"); // False!
相等和哈希函数:
@Override public boolean equals(Object o) { if (o == null) return false; if (o == this) return true; if (!(o instanceof Test)) { return (o instanceof String) && (name.equals(o)); } Test t = (Test)o; return name.equals(t.GetName()); } @Override public int hashCode() { return name.hashCode(); }
我读到说为了确保自定义类的contains
方法正常工作,它需要重写equals
方法。因此,当equals
方法返回true时,contains
方法返回false,这对我来说非常奇怪。
我应该如何使它工作?