Java基础-23、Set如何判断元素重复

HashSet区分重复元素:
先使用hashcode方法判断已经存在HashSet中元素的hashcode值和将要加入元素hashcode值是否相同。如果不同,直接添加;如果相同,再调用equals方法判断,如果返回true表示HashSet中已经添加该对象了,不需要再次添加(重复),如果返回false就表示不重复,可以直接加入HashSet中
TreeSet区分重复元素:
TreeSet中的元素对象如果实现Comparable接口,使用compareTo方法区分元素是否重复,如果没实现Comparable接口,自定义比较器(该类实现Comparator接口,覆盖compare方法)比较该元素对象,调用TreeSet的构造方法new TreeSet(自定义比较器参数),这样就可以比较元素对象了

首先要清楚Object中的hashCode 与equals 方法

hashCode返回的是int型,为对象的内存地址
equals比较的是两个引用是否指向同一地址

自定义的类如果重写Object中的hashcode和equals就可以自定义设置set如何判断元素重复。
重写时要注意:
1、返回值和参数一定要一样,因为Object.equals中参数是Object类型,所以重写时参数类型也必须是Object类型
2、函数名注意大小写,第一个单词小写,其余单词首字母大写。
示例:自定义类型A,只要私有遍量a相等,set就会判断为重复

public class text{
   
    public static void main(String[]<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值