• 自然排序Comaparable的使用


    public interface Comparable<T>

    该接口对实现它的每个类的对象强加一个整体排序。 这个排序被称为类的自然排序 ,类的compareTo方法被称为其自然比较方法

    注意让类实现该接口,注意泛型

    String类重写了compareTo方法 所以可以直接调用

    注意重写方法时规则的运用。

    this代表s2  s代表s1

    测试类

    package com.Test01;
    
    import java.util.TreeSet;
    
    public class TreeSetDemo02 {
        public static void main(String[] args) {
            TreeSet<Student> ts = new TreeSet<Student>();
    
            Student s1 = new Student("xishi", 29);
            Student s2 = new Student("diaochan", 29);
            Student s3 = new Student("yangyuhuan", 21);
            Student s4 = new Student("wangzhaojun", 26);
    
            ts.add(s1);
            ts.add(s2);
            ts.add(s3);
            ts.add(s4);
    
            for (Student s : ts) {
                System.out.println(s.getName() + "," + s.getAge());
            }
    
    
        }
    }
    

     Student类

    package com.Test01;
    
    import java.util.Objects;
    import java.util.TreeSet;
    
    public class Student implements Comparable<Student> {
        private String name;
        private int age;
    
        public Student() {
        }
    
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Student student = (Student) o;
            return age == student.age &&
                    Objects.equals(name, student.name);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, age);
        }
    
        @Override
        public int compareTo(Student s) {
            int num = this.age - s.age;
           int num2 =  num == 0 ? this.name.compareTo(s.name) : num;
            return num2;
    
        }
    }
    
  • 相关阅读:
    linux内核中如何访问寄存器?
    uboot加载itb文件后提示"ERROR: new format image overwritten"如何处理?
    如何单独编译Linux内核源码中的驱动为可加载模块?
    openwrt如何打开linux内核的CONFIG_DEVMEM选项?
    openwrt的shell下如何访问寄存器的内容?
    linux系统错误码大全
    第 3 章 文本元素
    第 2 章 基本格式
    第 1 章 HTML5 概述
    第 20 章 项目实战--案例和关于[7]
  • 原文地址:https://www.cnblogs.com/lsswudi/p/11408886.html
Copyright © 2020-2023  润新知