Java Comparable接口

本文概述

  • Java可比示例
  • Java可比示例:逆序
Java Comparable接口用于对用户定义的类的对象进行排序。该接口在java.lang包中找到, 仅包含一个名为compareTo(Object)的方法。它仅提供单个排序序列, 即, 你只能基于单个数据成员对元素进行排序。例如, 可以是rollno, 名称, 年龄或其他任何东西。
compareTo(Object obj)方法
public int compareTo(Object obj):用于将当前对象与指定对象进行比较。它返回
  • 如果当前对象大于指定对象, 则为正整数。
  • 如果当前对象小于指定的对象, 则为负整数。
  • 如果当前对象等于指定的对象, 则返回零。
我们可以对以下元素进行排序:
  1. 字符串对象
  2. 包装类对象
  3. 用户定义的类对象
收藏类
【Java Comparable接口】集合类提供用于对集合元素进行排序的静态方法。如果集合元素是Set或Map, 则可以使用TreeSet或TreeMap。但是, 我们无法对List的元素进行排序。 Collections类提供用于对List类型元素的元素进行排序的方法。
用于对List元素进行排序的Collections类的方法
public void sort(List list):用于对List的元素进行排序。列表元素必须是Comparable类型。
注意:默认情况下, String类和Wrapper类实现Comparable接口。因此, 如果将字符串或包装类的对象存储在列表, 集合或映射中, 则默认情况下它是可比较的。Java可比示例让我们看一下Comparable接口的示例, 该接口根据年龄对列表元素进行排序。
档案:Student.java
class Student implements Comparable< Student> { int rollno; String name; int age; Student(int rollno, String name, int age){ this.rollno=rollno; this.name=name; this.age=age; }public int compareTo(Student st){ if(age==st.age) return 0; else if(age> st.age) return 1; else return -1; } }

文件:TestSort1.java
import java.util.*; public class TestSort1{ public static void main(String args[]){ ArrayList< Student> al=new ArrayList< Student> (); al.add(new Student(101, "Vijay", 23)); al.add(new Student(106, "Ajay", 27)); al.add(new Student(105, "Jai", 21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+" "+st.name+" "+st.age); } } }

105 Jai 21 101 Vijay 23 106 Ajay 27

Java可比示例:逆序让我们看一下Comparable接口的相同示例, 该示例根据年龄以相反的顺序对列表元素进行排序。
档案:Student.java
class Student implements Comparable< Student> { int rollno; String name; int age; Student(int rollno, String name, int age){ this.rollno=rollno; this.name=name; this.age=age; }public int compareTo(Student st){ if(age==st.age) return 0; else if(age< st.age) return 1; else return -1; } }

文件:TestSort2.java
import java.util.*; public class TestSort2{ public static void main(String args[]){ ArrayList< Student> al=new ArrayList< Student> (); al.add(new Student(101, "Vijay", 23)); al.add(new Student(106, "Ajay", 27)); al.add(new Student(105, "Jai", 21)); Collections.sort(al); for(Student st:al){ System.out.println(st.rollno+" "+st.name+" "+st.age); } } }

106 Ajay 27 101 Vijay 23 105 Jai 21

    推荐阅读