java-TreeSet的有值排序和自定义排序

类:

package Collection_Set_treeSet;

public class Apple implements Comparable<Apple>{ //  implements Comparable<Apple>为自定义比较方法一添加
    private String name;
    private String color;
    private double weight;
    private int money;

    public Apple() {
    }

    public Apple(String name, String color, double weight, int money) {
        this.name = name;
        this.color = color;
        this.weight = weight;
        this.money = money;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public double getWeight() {
        return weight;
    }

    public void setWeight(double weight) {
        this.weight = weight;
    }

    public int getMoney() {
        return money;
    }

    public void setMoney(int money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Apple{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                ", weight=" + weight +
                ", money=" + money +
                '}';
    }

    /**
     * 1.自定义比较方法一
     * @param o
     * @return
     */
    @Override
    public int compareTo(Apple o) {
        return this.money-o.money;//消除重复内容
        //return this.money-o.money >=0 ? 1:-1;   不消除重复内容
       // return Double.compare(this.weight,o.weight);  浮点型用此方法
    }
}

排序:

package Collection_Set_treeSet;

import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

//了解treeSet的有值排序和自定义排序,字符串排序按照ASCII对应的编码排序(不重复,无索引,可排序)
public class treeSet_paixu {
    public static void main(String[] args) {
        Set<Integer> se = new TreeSet<>();
        se.add(45);
        se.add(12);
        se.add(124);
        se.add(33);
        System.out.println(se);//  [12, 33, 45, 124]

        //自定义排序

        /**
         * 自定义比较方法二
         * 优先使用此方法
         Set<Apple> app = new TreeSet<>(new Comparator<Apple>() {
                   @Override
                   public int compare(Apple o1, Apple o2) {
                       return o1.getWeight()-o2.getWeight();
                   }
         });
         */
        Set<Apple> app = new TreeSet<>();
        app.add(new Apple("红苹果","红色",45.5,54));
        app.add(new Apple("绿苹果","绿色",23.0,89));
        app.add(new Apple("黄苹果","黄色",12.5,4));
        app.add(new Apple("金苹果","金色",49.5,4));
        System.out.println(app);//排序代码见Apple61-70。按照money排序,因为红苹果和金苹果的价格相同,则输出后不会显示金苹果的资料
        //如果两个比较的内容相同且需要都显示出来,可在Apple类中68排变为return this.money-o.money >=0 ? 1:-1;
    }
}
/**
 自定义排序规则
 方式一
 让自定义的类(如学生类)实现Comparable接口重写里面的compareTo方法来定制比较规则。

 方式二
 TreeSet集合有参数构造器,可以设置Comparator接口对应的比较器对象,来定制比较规则。

 两种方式中,关于返回值的规则:
 如果认为第一个元素大于第二个元素返回正整数即可。
 如果认为第一个元素小于第二个元素返回负整数即可。
 如果认为第一个元素等于第二个元素返回0即可,此时Treeset集合只会保留一个元素,认为两者重复。

 如果要保留重复内容,可用三元运算符

 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开心比较堵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值