java 关于集合Set接口的实现类中 元素相等的问题

java 关于集合Set接口的实现类中 元素相等的问题,第1张

HashSet确实是靠hashcode来运算出这个元素应该存放在什么地方。

但是不同的对象,hashcode也可能会相同。

这时就发生了冲突,需要再次比较发生冲突的两个或多个元素是否相同(通过equals方法)。

如果相同添加失败,如果不同添加成功。

为什么不直接用equals比较是否相同?

因为不知道该跟哪个元素比较啊,难不成遍历整个Set来比较?

如果有一万个元素呢,那么将会很费时间。

而先算出hashcode在比较有个好处。

只要hashcode不同,则可以确定元素不同。只有hashcode相同的情况下,元素才有可能相同。

hashcode的性质:

如果两个元素相同,那么其hashcode必定相同。

如果两个元素不同,那么不要求其hashcode一定不同。(但是如果不同的元素尽量能返回不同的hashcode,那么将有助于提高HashSet的性能)

java中往集合添加数据调用add();方法就行

//第一步先创建一个set集合的子类

HashSet has=new HashSet<>()

//给set集合添加的方法是add()

has.add(args)

资料拓展:

Collection接口可以存放重复元素,也可以存放不重复元素。List可以存放重复元素,Set就是不重复的元素。 

通过元素的equals方法,来判断是否为重复元素。 

Set集合取出元素的方式可以采用:迭代器,增强 for


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11958643.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存