欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java comparable和comparator

程序员文章站 2022-04-17 09:06:38
...

关于java comparable和comparator接口可以从下面这一段排序代码进行分析:

import java.util.Arrays;

import java.util.Comparator;

 

public class MyByte implements Comparable<MyByte>,Comparator<MyByte>{

    int value;

public static void main(String[] args) {

MyByte mb[]=new MyByte[4];

for(int i=0;i<mb.length;i++){mb[i]=new MyByte();}

mb[0].value=1;

mb[1].value=5;

mb[2].value=0;

mb[3].value=4;

Arrays.sort(mb,new MyByte());        //comparator排序

for(int i=0;i<mb.length;i++){System.out.print(mb[i].value+" ");}

System.out.println();

Arrays.sort(mb);              //comparable排序

for(int i=0;i<mb.length;i++){System.out.print(mb[i].value+" ");}

}

public int compareTo(MyByte o) {   //comparable排序使用

return value-o.value;

}

public int compare(MyByte o1, MyByte o2) {  //comparator排序使用

return o2.value-o1.value;

}

 

}

输出结果为:

5 4 1 0   --该行为comparator排序结果

0 1 4 5   --该行为comparable排序结果

 

1.可以看到当一个类实现了comparator接口和comparable接口的以及相关方法的时候,可以使用arrays.sort

和collections.sort进行排序。

2.排序的方向(由大到小、有小到大)由比较的方法决定:使用comparable的时候,本类值-传入值为升序;使用comparator的时候,第一个参数-第二个参数为升序。

3.comparable相当于内部排序,comparator相当于外部排序,其本质其实是一样的。