Java 集合框架 Set,自定义元素使用HashSet要重写hashCode()和equals()方法,使用TreeSet要重写compareTo方法或传入Comparator

集合继承框架图

在这里插入图片描述
还是这个图,今天学的是set接口,还有他底下的两个类:HashSet、TreeSet。
set:无序,存和取不一致,不允许重复。

Set

List有特有的方法是因为他有索引这个特性,Set就没有特别的方法。
在这里插入图片描述

HashSet

可以通过HashSet来保证存入元素的唯一性。

HashSet的add方法会返回boolean值表示有没有添加成功。

Hashset不能添加重复的元素,在自定义类中要重写equals方法判断元素是否相等,否则HashSet会以地址值来判断元素是否相等。

除了equals方法要重写以外,还需要重写hashCode方法。hashCode方法是Object类中定义的用来计算哈希码(根据地址)的函数,在HashSet中添加元素时会调用hashCode计算该元素的哈希码值,决定这个元素放在哪个位置,如果两个元素哈希码值一样,HashSet就会调用equals方法判断这两个元素是否相等,如果相等就不添加,不相等就挂在这个位置上(木桶结构)。

重写hashCode()和equals()方法的标准:
hashCode:属性相同的对象返回值必须相同,属性不同的返回值尽量不同(提高效率,减少不必要的调用equals)
equals:属性相同返回true,属性不同返回false,返回false的时候存储

LinkedHashSet

LinkedHashSet可以保证存取顺序一致。
保证元素唯一用的是HashSet,但是存储结构用的是链表。
HashSet存取速度更快,开发中更常用的是HashSet。

将集合中的重复元素删除:

ArrayList<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.add("c");
list.add("a");
list.add("b");
LinkedHashSet<String> set = n
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值