Set与子类(HashSet、TreeSet)

目录

Set

Set集合不允许增加重复数据,Set用的最多为HashSet。

在这里插入图片描述

常用方法:

方法说明
public boolean add(E e);增加数据
public boolean contains(Object o)查询数据
public boolean remove(Object o)删除指定数据
public int size()获取数据总个数
public void clear()清空数据
public static Set of()通过指定的内容创建set集合
		//使用of创建的Set集合,数据不允许修改和重复
        Set<Integer> setA = Set.of(1,2,3,4,5,6,7,8);    
        Set<Integer> setB = new HashSet<>();
        Set<Integer> setC = new TreeSet<>();
        Set<Integer> setD = new LinkedHashSet<>();

HashSet(散列存储)

在类中重写equals(比较对象数据)和hashCode(获取对象编码)可以解决重复数据的问题。
在这里插入图片描述

当使用无参构造时,HashSet默认容量为16,当存储的数据达到当前容量的75%时会自动扩容。

**实例:**HashSet的存储的数据不是有序的

 Set<String> set = new HashSet<>();
        set.add("1 java");
        set.add("2 hello");
        set.add("3 world");
        set.add("4 ");
        set.add("5");
        System.out.println(set);

结果:

[1 java, 5, 3 world, 4 , 2 hello]

TreeSet(有序存储)

自动进行排序(从低到高)。

在这里插入图片描述

构造:

方法说明
public TreeSet()默认使用Comparable接口进行排序
public TreeSet(Comparator<? super E> comparator)可以指定使用Comparator接口进行排序

TreeSet排序示例:

Set<String> set = new TreeSet<>();
        set.add("1 java");
        set.add("4 ");
        set.add("3 world");
        set.add("2 hello");
        set.add("5");
        System.out.println(set);

结果:

[1 java, 2 hello, 3 world, 4 , 5]

使用TreeSet对对象数据进行排序时,根据Comparable接口排序数据因为一样被判定为重复,只能在相同时再判定其他数据是否相等,在数据多的情况下很麻烦,比如在50个数据情况下。

  public int compareTo(Ball ball) {
        if(this.price > ball.price){
            return 1;
        }else if(this.price < ball.price){
            return -1;
        }else {
            return this.brand.compareTo(ball.brand);	//判断生产时期是否相等
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值