在java中,想要实现对象的排序,可以让对象实现Comparable借口,一直困扰我的是compareTo函数的含义。12int compareTo(Object O) O − the Object to be compared.
从上面函数的意思可以看出,O的含义是被比较的对象。
假设我们现在要比较的类是:12345class NodeMM{ public int id; public int year;}
假设我们现在要实现的是对id从小到大排序,如果id相同,则年龄大的优先。
那么代码为:
|
|
我来试着解释一下为啥么要这么写,大于小于和1,-1的关系是什么
当我们想要对id从小到大排序时,我们比较的是前一个,也就是前面的都是有序的,当此时的id>O.id的时候,也就没有必要进行比较,直接return 0 即可。
当我们想对year从大到小排序时,当year小于O.year的时候,才是满足题意的,也就是此时才return 1,而当year>O.year的时候,应该return -1,也就是需要调增位置。