我正在用Java编写一个程序,我想使用HashSet(和HashMap).我无法使contains(和containsKey)方法起作用.我想我必须在某处覆盖一些equals方法才能使用.我们的想法是获得以下代码来生成输出:true.有关如何做到这一点的任何想法?
import java.util.HashSet;
import java.util.Set;
public class Sets {
public static void main(String args[]){
Set<StringBuilder> wordSet = new HashSet<StringBuilder>();
StringBuilder element = new StringBuilder("Element");
wordSet.add(element);
StringBuilder element2 = new StringBuilder("Element");
System.out.println(wordSet.contains(element2));
}
}
Run Code Online (Sandbox Code Playgroud)
你不能StringBuilder在这里使用,因为StringBuilder使用引用相等,而不是内容的相等.只需使用String.
(这是有道理的,因为它StringBuilder是可变的,并且两个StringBuilders在某一点可能相等而在之后不相等.这不是编写hashCode()或equals方法的问题,因为StringBuilder它不是你编写的类,它是内置于Java中的.)