今天补String相关知识的时候,这个问题想不通。
Set集合不是不能存放相同的值吗?可这种情况可以存,难道就是因为StringBuffer可变?
但是存元素到set集合,不是会先hashCode比较,再equals比较吗,equals比较是相同的,应该存不进去啊。
Java Set集合什么情况可以存放相同的值(key相同)
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- a5156520 2022-08-17 17:35关注
可能是因为StringBuffer对象str和str2的hashcode()不一样导致的,测试代码如下:
import java.util.HashSet; import java.util.Iterator; public class HashSetAddStringBuffer { public static void main(String[] args) { // TODO Auto-generated method stub StringBuffer str = new StringBuffer("aaa"); StringBuffer str2 = new StringBuffer("aaabbb"); HashSet set = new HashSet(); set.add(str2); System.out.println("str2.hashCode():"+str2.hashCode()); str.append("bbb"); set.add(str); System.out.println("str.hashCode():"+str.hashCode()); Iterator it = set.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用