使用HashSet测试包含

B M*_*B M 0 java hashset

我正在用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)

Lou*_*man 6

你不能StringBuilder在这里使用,因为StringBuilder使用引用相等,而不是内容的相等.只需使用String.

(这是有道理的,因为它StringBuilder是可变的,并且两个StringBuilders在某一点可能相等而在之后不相等.这不是编写hashCode()equals方法的问题,因为StringBuilder它不是你编写的类,它是内置于Java中的.)