一直对Comparator中的compare方法不太理解,每次用到都要去查好久,这次记录一下自己的理解。

需求:people = [[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]],每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。现按照身高降序排列,ki按升序排列。

身高降序排列:如果person2[0] - person1[0]>0说明后面的人比前后面的人高,需要调整,如果person2[0] - person1[0]<0说明后面的人比前面的人低,不用调整。从而达到降序排列。

Ki升序排列:如果person1[1] - person2[1]>0说明后前面的人比后面的人高,需要调整,如果person1[1] - person2[1]<0说明前面的人比后前面的人低,不用调整。从而达到升序排列。

这里person1表示位于前面的对象,person2表示后面的对象 返回-1(或负数),表示不需要交换01和02的位置,person1排在person2前面,asc 返回1(或正数),表示需要交换01和02的位置,person1排在person2后面,desc

Arrays.sort(people, new Comparator() {

public int compare(int[] person1, int[] person2) {

if (person1[0] != person2[0]) {

return person2[0] - person1[0];

} else {

return person1[1] - person2[1];

}

}

});

好文链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。