• 利用Comparable和Comparator进行类的排序


    Comparator类型的排序:

    package haohaoxuexi;

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

    public class lianxi09 {
    public static void main(String[] args) {
    //建立实例,进行实验
    lianxi08 p1=new lianxi08("易学习",100);
    lianxi08 p2=new lianxi08("侯亮平",1000);
    lianxi08 p3=new lianxi08("高小琴",1200);
    lianxi08 p4=new lianxi08("李达康",50);
    //利用TreeSet容器进行数据排序
    //这里用的是java.util.Comparator的方法,定义一个排序的标准,从而实现排序
    TreeSet<lianxi08> persons=new TreeSet<lianxi08>(
    new Comparator<lianxi08>(){

    @Override
    public int compare(lianxi08 o1, lianxi08 o2) {
    return -(o1.getHandsome()-o2.getHandsome());
    }
    });
    //将定义好的类实例加入到定义好的TreeSet容器中
    persons.add(p1);
    persons.add(p2);
    persons.add(p3);
    persons.add(p4);
    System.out.println(persons);
    //这里的排序是直接按顺序放进定义好的容器中,而非将写好的容器中的内容进行排序,数据更改之后不会影响顺序,但之后更改可能会引起数据的重复,故一般状况下,不要修改数据。
    }

    }

    package haohaoxuexi;

    public class lianxi08 {
    //定义一个类,进行操作,设置私有属性
    private String nameString;
    private int handsome;
    //定义无参构造器
    public lianxi08() {
    }
    //设置setter和getter方法进行该类属性的操作
    public String getNameString() {
    return nameString;
    }
    public void setNameString(String nameString) {
    this.nameString = nameString;
    }
    public int getHandsome() {
    return handsome;
    }
    public void setHandsome(int handsome) {
    this.handsome = handsome;
    }
    public lianxi08(String nameString, int handsome) {
    super();
    this.nameString = nameString;
    this.handsome = handsome;
    }
    //重写toString方法实现格式化输出
    @Override
    public String toString() {
    return "姓名:"+this.nameString+",帅气指数:"+this.handsome+" ";
    }
    }

    Comparable类型的排序:

    package haohaoxuexi;

    import java.util.TreeSet;

    public class lianxi11 {
    public static void main(String[] args) {

    //定义类的实例
    linaxi10 w1=new linaxi10("垃圾回收员",12000);
    linaxi10 w2=new linaxi10("农民工",8000);
    linaxi10 w3=new linaxi10("程序员",4000);
    //定义一个TreeSet容器
    TreeSet<linaxi10> employees=new TreeSet<linaxi10>();
    //将实例加入到TreeSet容器中
    employees.add(w1);
    employees.add(w2);
    employees.add(w3);
    //进行输出
    System.out.println(employees);
    //此处的定义与之前的方法一样,不要进行数据的修改
    }

    }

    package haohaoxuexi;
    //通过利用java.lang.Comparable中的排序方法实习排序
    public class linaxi10 implements java.lang.Comparable<linaxi10>{
    //定义私有属性
    private String typeString;
    private double salary;
    //重写compareTo方法实现排序格式的定义
    @Override
    public int compareTo(linaxi10 o) {

    return this.salary>o.salary?1:(this.salary==o.salary?0:-1);
    }
    //设置无参构造器
    public linaxi10() {
    super();
    // TODO Auto-generated constructor stub
    }
    //设置setter和getter方法
    public String getTypeString() {
    return typeString;
    }
    public void setTypeString(String typeString) {
    this.typeString = typeString;
    }
    public double getSalary() {
    return salary;
    }
    public void setSalary(double salary) {
    this.salary = salary;
    }
    public linaxi10(String typeString, double salary) {
    super();
    this.typeString = typeString;
    this.salary = salary;
    }
    //重写toString定义输出格式
    @Override
    public String toString() {
    return "工种:"+this.typeString+",工资:"+this.salary+" ";
    }

    }

  • 相关阅读:
    数据结构之堆排序
    数学之向量的点积(点乘、数量积)
    解决oracle11g数据库监听连接不上问题
    纯净版SSM
    maven打包mapper.xml打不进去问题
    servlet读取请求参数后流失效的问题
    Linux---centos7.0安装、配置
    5-- String 、StringBulid 、StringBuffer的区别
    02 | Java内存模型:看Java如何解决可见性和有序性问题
    01 | 可见性、原子性和有序性问题:并发编程Bug的源头
  • 原文地址:https://www.cnblogs.com/zx931880423/p/6759121.html
Copyright © 2020-2023  润新知