java comparable和comparator
关于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相当于外部排序,其本质其实是一样的。
上一篇: 好用的谷歌浏览器插件
推荐阅读
-
java计算两个日期之前的天数实例(排除节假日和周末)
-
用Rational Rose逆向工程(java)生成类图(教程和错误解决)
-
Java实现的求解经典罗马数字和阿拉伯数字相互转换问题示例
-
Java中增强for循环的实现原理和坑详解
-
java中静态变量和实例变量的区别详细介绍
-
Java下http下载文件客户端和上传文件客户端实例代码
-
java编程abstract类和方法详解
-
java中Iterator和ListIterator实例详解
-
浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别
-
java环境变量为什么要配置path和classpath详细解答