Comparable<T> 和 Comparator<T>
2016-07-15 11:31
351 查看
相同点:
Comparable<T> 和 Comparator<T>都是接口
不同点:
两者声明的方法不同。前者是compareTo()方法,后者是compare()方法。
Comparable<T>此接口是由具体某个有实际意义的类来实现,指示出此类的对象有什么样的排序方法。下面的苹果
上面的例子中,苹果重量轻的将排在后面,所以是降序排列。
Comparator<T>此接口一般用来的定义比较器,不会由包含实际意义的类来实现,而是由具体比较器来实现。下面定义一个比较器:
上面的例子定义了一个重量比较器,我把它用来比较苹果的重量,即使用泛型
Comparable<T> 和 Comparator<T>都是接口
不同点:
两者声明的方法不同。前者是compareTo()方法,后者是compare()方法。
Comparable<T>此接口是由具体某个有实际意义的类来实现,指示出此类的对象有什么样的排序方法。下面的苹果
public class Apple implements Comparable<Apple> { /** * 苹果的重量 */ private int weight; /** * 自然排序即从小到大 * 返回1的,代表此对象比参数对象大,排在后面,这样就可以控制降序或升序排列 */ @Override public int compareTo(Apple apple) { if (this.weight > apple.getWeight()) { return -1; } else if (this.weight < apple.getWeight()) { return 1; } else { return 0; } } }
上面的例子中,苹果重量轻的将排在后面,所以是降序排列。
Comparator<T>此接口一般用来的定义比较器,不会由包含实际意义的类来实现,而是由具体比较器来实现。下面定义一个比较器:
public class WeightComparator implements Comparator<Apple> { /** * 苹果的重量 */ private int weight; /** * 自然排序即从小到大 * 返回1的,代表此对象比参数对象大,排在前面,这样就可以控制降序或升序排列 */ @Override public int compare(Apple a, Apple b) { if (a.getWeight() > b.getWeight()) { return 1; } else if (a.getWeight() < b.getWeight()) { return -1; } else { return 0; } } public static void main(String[] args) { Apple a = new Apple(); Apple b = new Apple(); Apple c = new Apple(); a.setWeight(50); b.setWeight(150); c.setWeight(100); Apple[] apples = {a,b, c}; Arrays.sort(apples, new WeightComparator()); //50 100 150 System.out.println("" + apples[0] + apples[1] + apples[2]); } }
上面的例子定义了一个重量比较器,我把它用来比较苹果的重量,即使用泛型
public class WeightComparator implements Comparator<Apple>
相关文章推荐
- iOS内存管理retain,assign,copy,strong,weak
- nvidia gpu fan speed control
- (HttpURLConnection)强制转化
- iOS- define宏定义和const常变量区别
- url中含有中文字符
- gridview 点击行变颜色
- Android开发艺术探索——IPC之Messenger、AIDL
- 将HTML5封装成android应用APK文件的几种方法
- 三、文件搜索命令【基础篇】
- Educational Codeforces Round 14
- HEVC标准概览(五)Profile、Tier和Level
- Android学QQ聊天列表展示ListView
- 图片下拉放大 导航栏下拉隐藏 上拉出现
- Git版本控制
- Android 开发你需要了解的 Gradle 配置
- MAC下的文本编辑器 Vim
- JAVA文件操作大全(5)
- hihocoder #1061 : Beautiful String
- 如何写一篇好的技术博客
- redis配置文件