文章目录
  1. 1. 概述:
    1. 1.1. 本文记录:
  2. 2. 一、Comparable接口的介绍和使用
    1. 2.1. 1、基本介绍
      1. 2.1.1. JAVA中基本数据类型(int)等可以进行比较和排序,那么对象数据类型是否可以进行排序呢?答案是肯定的。
      2. 2.1.2. 例:
  3. 3. 二、Comparator接口的介绍和使用
    1. 3.0.1. 例:Comparator实现
  • 4. 三、两个接口的比较
  • 概述:

    本文记录:

    • Comparable接口的介绍和使用
    • Comparator接口的介绍和使用
    • 两个接口的比较

    一、Comparable接口的介绍和使用

    1、基本介绍

    JAVA中基本数据类型(int)等可以进行比较和排序,那么对象数据类型是否可以进行排序呢?答案是肯定的。

    • Comparable接口可以强行对实现它的 每个类的对象进行整体排序。
    • 实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。
    • 实现此接口的类需要复写compareTo()方法。

    例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public class Person implements Comparable<Person>{//实现接口	
    int age;
    String name;

    public Person(int age,String name){
    this.age = age;
    this.name = name;
    }
    //getter&setters

    @Override //如果前者大于后者,返回1,等于返回0,小于返回-1
    public int compareTo(Person person) {//复写方法
    if(this.age<person.age)
    return -1;
    else if(this.age==person.age)
    return 0;
    else return 1;
    }

    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    //测试代码
    public class TestComparable {

    public static void main(String[] args) {
    List<Person> person = new ArrayList<Person>();

    person.add(new Person(15,"xiaoming"));
    person.add(new Person(20,"xiaoli"));
    person.add(new Person(18,"xiaowang"));
    Collections.sort(person);
    for (Person person2 : person) {
    System.out.println(person2.getAge());
    }
    }

    }

    二、Comparator接口的介绍和使用

    例:Comparator实现

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14

    public class MyComparable implements Comparator<Person>{

    @Override
    public int compare(Person person1, Person person2) {

    if(person1.age<person2.age)
    return -1;
    else if(person1.age == person2.age)
    return 0;
    else return 1;
    }

    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class TestComparator {
    public static void main(String[] args) {
    List<Person> person = new ArrayList<Person>();
    MyComparable c= new MyComparable();
    person.add(new Person(15,"xiaoming"));
    person.add(new Person(20,"xiaoli"));
    person.add(new Person(18,"xiaowang"));
    person.add(new Person(27,"xiaoma"));
    Collections.sort(person,c);
    for (Person person2 : person) {
    System.out.println(person2.getAge());
    }
    }

    }

    三、两个接口的比较

    • Comparator位于包java.util下,而Comparable位于包java.lang下
    • Comparable定义在模型的内部,而Comparator实现在模型外部
    • Comparable覆盖compareTo()方法,Comparator覆盖compare()方法
    文章目录
    1. 1. 概述:
      1. 1.1. 本文记录:
    2. 2. 一、Comparable接口的介绍和使用
      1. 2.1. 1、基本介绍
        1. 2.1.1. JAVA中基本数据类型(int)等可以进行比较和排序,那么对象数据类型是否可以进行排序呢?答案是肯定的。
        2. 2.1.2. 例:
    3. 3. 二、Comparator接口的介绍和使用
      1. 3.0.1. 例:Comparator实现
  • 4. 三、两个接口的比较