Java Comparable接口的使用与自定义实现
来源:互联网 发布:淘宝模特多少钱一天 编辑:程序博客网 时间:2024/06/07 18:01
Comparable接口
Comparable接口是一个泛型接口。Java类库中:Byte,Short,Integer,Long,Float,Double,Character,BigTnteger,BigDecimal,Calendar,String及Data类都实现了Comparable接口。可以直接调用,对于没有实现的类,可以通过接口implements实现。
CompareTo方法
Java提供Comparable接口为我们解决比较两个对象的问题。
接口中的cpmpareTo方法判断这个象相对于比较对象的顺序,小于返回负整数,等于返回0,大于返回正整数。
默认实现的接口
System.out.println("a".compareTo("z"));//打印测试 System.out.println("z".compareTo("a"));//打印测试 System.out.println(new Integer(10).compareTo(new Integer(20)));//打印测试 System.out.println(new Integer(20).compareTo(new Integer(10)));//打印测试
自定义接口实现
例如:通过面积来比较两个矩形的大小。
public class Rectangular implements Comparable<Rectangular> {double length, width;public Rectangular(double length, double width) {this.length = length;this.width = width;}public double getArea() {return length * width;}@Overridepublic int compareTo(Rectangular o) {//重写比较方法if (getArea() > o.getArea()) {//面积比较return 1;} else if (getArea() < o.getArea()) {return -1;} else return 0;}}System.out.println(new Rectangular(1,1).compareTo(new Rectangular(2,2)));System.out.println(new Rectangular(3,3).compareTo(new Rectangular(2,2)));//打印测试
sort方法
由于Comparaable对象都有compareTo方法,sort方法就可以使用compareTo方法来对数组的对象进行比较和排序。
数组排序使用Arrays.sort()
String[] animal = {"cat", "dog", "chicken", "pig"}; Arrays.sort(animal);//数组排序的类 for (String s : animal) { System.out.print(s + " "); } System.out.println();
List排序使用Collections.sort()
ArrayList<String> strings = new ArrayList<>();strings.add("chicken");strings.add("cat");strings.add("dog");strings.add("pig");Collections.sort(strings);//list排序的类for (String s : strings) {System.out.print(s + " ");}
自定义的Rectangular类排序
由于自定义的Rectangular类也实现了Comparable接口的CompareTo方法,所以也可以适应sort方法。
Rectangular[] rectangulars = {new Rectangular(2, 2), new Rectangular(1, 1), new Rectangular(3, 3)};Arrays.sort(rectangulars);for (Rectangular s : rectangulars) {System.out.println(s.toString() + " ");//打印排序的结果}System.out.println();ArrayList<Rectangular> arrayList = new ArrayList<>();arrayList.add(new Rectangular(2, 2));arrayList.add(new Rectangular(1, 1));arrayList.add(new Rectangular(3, 3));Collections.sort(arrayList);for (Rectangular s : arrayList) {System.out.println(s.toString() + " ");//打印排序的结果}}
对象的比较,多个参数排序问题
有的时候比较一个对象时,我们要先比较其A属性,如果A相等再比较B。
如有需要请查看我的另一篇博客:
http://blog.csdn.net/demonliuhui/article/details/54578777
0 0
- Java Comparable接口的使用与自定义实现
- Comparable接口实现与使用
- Java自定义实现Comparable接口的类,实现多维排序
- java Comparable接口与Comparator接口的使用与区别
- Java使用Comparable接口自定义排序
- 【Java学习笔记】Comparable接口的实现和使用
- 【Java学习笔记】Comparable接口的实现和使用
- 【Java学习笔记】Comparable接口的实现和使用
- 【Java学习笔记】Comparable接口的实现和使用
- 【Java学习笔记】Comparable接口的实现和使用
- comparator接口与Comparable接口的使用
- comparable接口VScomparator接口及java中自定义对象运算符的实现
- Comparable接口的实现和使用
- Comparable接口的实现和使用
- Comparable接口的实现和使用
- Comparable接口的实现和使用
- Comparable接口的实现和使用
- Comparable接口的实现和使用
- File/IO
- EXP-00026: conflicting modes specified
- Spark DAG之划分Stage
- Eclipse+Maven工程异常:Plugin execution not covered by lifecycle configuration
- 一、Elevator
- Java Comparable接口的使用与自定义实现
- Vue-cli 中为单独页面设置背景色的方法
- 数组之求无序数组中的min和max
- [cocos2dx]Cocos2d-x在win7下android环境搭建
- 百度富文本编辑器 UEditor 1.4.3 getContent会报错:Uncaught TypeError
- 判断字符串是否回文
- 数位DP导学模板
- SpringMVC实现文件上传
- 二、Climbing Worm