hashCode()
和 equals()
方法在 StringBuffer
和 StringBuilder
中没有被覆盖,我正在尝试下面这段代码..
//StringBuffer does not override equals & hashCode
//StringBuffer s = new StringBuffer("saral");
//StringBuffer s1 = new StringBuffer("saral");
StringBuilder s = new StringBuilder("saral");
StringBuilder s1 = new StringBuilder("saral");
//String s = new String("saral");
//String s1 = new String("saral");
HashSet set=new HashSet();
set.add(s);
set.add(s1);
set.add(null);
System.out.println("There are "+set.size()+" elements in the set.");
当我使用 StringBuffer 或 StringBuilder 时,我得到的结果都是 3,但在 string 的情况下,结果是 2,因为 string 已经覆盖了 hashCode()
和equals()
方法,请指教。
最佳答案
StringBuilder/StringBuffer 是为了更高效的字符串操作而创建的,而不是为了存储值。因此,您不应将其用作 key 或实现您的版本。或者直接调用 toString
即可。
关于java - 关于 StringBuffer 和 StringBuilder 中的方法没有被重写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10361281/