自然排序Comaparable的使用

Posted lsswudi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自然排序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;

    

 

以上是关于自然排序Comaparable的使用的主要内容,如果未能解决你的问题,请参考以下文章

treeset集合与自然排序compara的使用

Java自然排序 Comparable的使用

[Java基础]自然排序Comparable的使用

自然排序算法

使用android对sqlite中的字母数字值进行自然排序

PHP中支持Unicode的自然排序算法?