Java中HashSet 和TreeSet 去重时 hashcode equals compareto 方法的重写

本文介绍了Java中HashSet和TreeSet在去重时如何利用hashcode、equals和compareTo方法。HashSet依赖哈希算法和equals方法去除重复项,而TreeSet基于二叉树实现,通过compareTo方法进行排序和去重。当处理引用类型数据时,需要重写相关方法以达到预期效果。
摘要由CSDN通过智能技术生成

原文:https://blog.csdn.net/HKDxiaofan/article/details/78857504?utm_source=copy

Set 接口实现类中的HashSet,TreeSet。

集合中不允许出现重复,去重的实现

1.HashSet

a.基本数据类型  HashSet是由哈希算法来实现的,在一个对象要被添加到集合中的时候,会被系统分配一个哈希值,使用的是hashCode()方法,系统首先会根据这个对象的哈希值去和集合中的对象去比较,

如果哈希值不同就可以加入,

如果相同,就去比较俩字符串的值是否一样,使用equals()方法,如果一样就不能加入,

此时,重复的对象是无法加入HashSet的。

b.引用类型数据 当我们加入的对象是数据类型不是基本数据类型(int,char,double 等),

 

下面我们在HashSet集合中添加三个Student类的对象

  HashSet<Student> hashSet = new HashSet<>();
   hashSet.add(new Student("张三", 18));
   hashSet.add(new Student("李四", age));
   hashSet.add(new Student("张三", 18));
   System.out.println(hashSet);

 

输出的结果是:

[Student [name=张三, age=18], Student [name=张三, age=18], Student [name=李四, age=19]

可以看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值