Java接口comparable使用方法详解

           

目录

        1.实现Comparable接口

        2.使用Collections.sort进行排序

        3.实现自定义比较逻辑


Comparable接口是Java中的一个接口,用于比较对象的大小。一个类实现Comparable接口后,就可以使用Java的Collections.sort方法进行对象排序。下面是关于Comparable接口的一些使用方法:

        1.实现Comparable接口

类需要实现Comparable接口,并且实现compareTo方法。compareTo方法会返回负整数、零或正整数,表示当前对象小于、等于或大于参数对象。

例如,下面是一个实现Comparable接口的Person类的代码:

public class Person implements Comparable {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }

    @Override
    public int compareTo(Person o) {
        return this.age - o.age;
    }
}

这个Person类定义了两个属性,name和age,其中age被用于比较对象大小。compareTo方法会比较两个Person对象的age属性,并返回一个整数值,用于排序。

这里是定义其按照年龄升序排序的,你也可以让其降序排序:只需要修改Person中的compareTo(Person 0)方法。具体如下:

//修改前(按照年龄升序)
@Override
    public int compareTo(Person o) {
        return this.getAge()-o.getAge();
    }
//修改后(按照年龄降序)
@Override
    public int compareTo(Person o) {
        return o.getAge()-this.getAge();
    }

        2.使用Collections.sort进行排序

可以使用Collections.sort方法或Arrays.sort对实现了Comparable接口的类进行排序。例如,下面是一个使用Collections.sort对Person对象列表进行排序的例子:

 Person[] persons = new Person[]{new Person(20, "张三"),new Person(15, "李四"),new Person(5, "王五")};
Collections.sort(people);//Arrays.sort(people)

for (Person p : people) {
    System.out.println(p.getName() + " " + p.getAge());
}

使用Collections.sort对列表进行排序。因为Person类实现了Comparable接口,所以Collections.sort可以通过调用compareTo方法来进行排序。最后,遍历排序好的列表,输出每个Person对象的name和age属性。

        3.实现自定义比较逻辑

实现了Comparable接口的类可以自定义比较逻辑。例如,如果想按照name属性进行比较,可以修改Person类的compareTo方法:

@Override
public int compareTo(Person o) {
    return this.name.compareTo(o.name);
}

这个compareTo方法使用name属性的字符串比较进行排序,而不是使用age属性的数值比较。

你可能感兴趣的:(Java基础,java,开发语言)