今天补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无用
悬赏问题
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效