Comparable助你实现自定义比较 | 带你学《Java语言高级特性》之三十六

上一篇:揭开比较器的神秘面纱 | 带你学《Java语言高级特性》之三十五
上一节中我们已经了解到常规的排序比较功能并不适用于对象,本节将介绍JDK1.2之后Java为开发者提供的Comparable接口的相关内容。

【本节目标】
通过阅读本节内容,你将了解到Comparable接口内的方法结构,从结构图中直观地了解到Comparable的一些相关关联内容,能够通过实现Comparable接口完成对对象的比较功能。

Comparable比较器

通过分析可以发现如果要实现对象的比较肯定需要有比较器来制定比较规则,而比较的规则就通过Comparable来实现,对于Comparable而言,需要清楚其基本的定义结构:

public interface Comparable<T>{
    /**
     * 实现对象的比较处理操作
     * @param o 要比较的对象
     * @return 当前数据比传入的对象小返回负数,如果大于返回正数,如果等于返回0
     */
   public  int compareTo(T o);
}

Comparable助你实现自定义比较 | 带你学《Java语言高级特性》之三十六
Comparable

范例:实现自定义对象数组排序操作

import java.util.Arrays;
class Person implements Comparable<Person>{
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override
    public String toString() {
        return "【Person类对象】姓名:" + this.name + "、年龄:" + this.age;
    }

    @Override
    public int compareTo(Person per) {
        return this.age-per.age;//升序
//        return per.age-this.age;//降序
    }
}
public class JavaAPIDemo {
    public static void main(String[] args) throws Exception {
        Person per [] = new Person []{
                new Person("小强-A",80),
                new Person("小强-B",50),
                new Person("小强-C",100),
        };
        Arrays.sort(data);//进行对象数组排序
        System.out.println(Arrays.toString(data));  
    }
}

运行结果:
[【Person类对象】姓名:小强-B、年龄:50
,【Person类对象】姓名:小强-A、年龄:80
,【Person类对象】姓名:小强-C、年龄:100
]

排序里面只需要有一个compareTo()方法进行排序规则的定义,而后整个Java系统里面就可以为其实现排序处理了。

想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:Comparator帮你补救比较缺陷 | 带你学《Java语言高级特性》之三十七
更多Java面向对象编程文章查看此处

上一篇:Linux 修改文件用户属性


下一篇:[20130106]整和数据库--修改字符集.txt