TreeSet的去重原理,(基础篇)

        这是一篇TreeSet去重原理文章,小白刚刚入门多多指教:

        TreeSet是集合Collection下的一个实现类,可以通过集合,来存储元素,Collection集合中的元素大概分为两类:Set集合和List集合,Set集合之中,又可以提取出两个,具有代表性的:HashSet和TreeSet,HashSet存取无序、数值无索引、不可重复,TreeSet和HashSet一样,都是存取无序、无索引、不可重复,但是TreeSet可以排序,我们重点来讲一讲:TreeSet的排序。

         新建一个类,实现接口的实现类

         重写equals和hashCode方法,这个接口提供了一个方法compareTo(Object i)

方法,重写之后,可以按照返回的值对存入TreeSet的元素进行排序。其中,返回值int,代表排序方法:如果int>0,则按照元素对象升序排序,如果int<0,则按照元素对象降序排序。如果int=零,则表示两个元素相同,就进行去重的工作。但是,这个方法是我们自己写的,除了按系统规定好的(或者说,设置好的)排序方法之外,我们还能够进行其他排序。

        具体如下:

import java.util.Objects;

public class huluBaoBao implements Comparable<huluBaoBao> {
    private int sid;
    private String fuluName;
    private String color;
    private em wood;
    enum em {一楼的,二楼的,三楼的,四楼的,五楼的,六楼的,七楼的
    }

    @Override
    public int compareTo(huluBaoBao o) {
        int num=this.getEnum(this.wood)-o.getEnum(o.wood);
        int num2=this.sid-o.sid;
        return num == 0 ? num2 : num;
    }

    public int getEnum(em string){
        int i=0;
        switch (string){
            case 一楼的:    i=1;break;
            case 二楼的:    i=2;break;
            case 三楼的:    i=3;break;
            case 四楼的:    i=4;break;
            case 五楼的:    i=5;break;
            case 六楼的:    i=6;break;
            case 七楼的:    i=7;break;}
        return i; }
                          //最主要用到上面的方法 
//===========================分割线=======================================
……

                这是我们自己定义的一个,排序方法, 如果“楼层”(枚举)重复,就比较sid,再根据id排序:在方法中,num == 0 ? num2 : num;就实现了这样的一个切换。

                 按照自定义的顺序,排的序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值