Comparable和Comparator实现对象比较
由文生义:
继承Comparable ,表示该类的实例是可以相互比较的;
继承Comparator,表示该类是一个比较器,里面设置了按什么属性比较,list需要按这个比较器里的规则来比较;
使用方法如下:
1.Comparable
public class User implements Comparable {
private string id;
private int age;
//必须实现的方法:
public int compareTo(Object o) {
return this.age - ((ComparableUser) o).getAge();
}
}
//调用:
User[] users = new User[] {
new ComparableUser("u1001", 25),
new ComparableUser("u1002", 20),
new ComparableUser("u1003", 21)
};
Arrays.sort(users);
2.Comparator
public class User {
private string id;
private int age;
}
public class ComparableUser implements Comparable {
//必须实现的方法:
public int compareTo(Object o) {
return this.age - ((ComparableUser) o).getAge();
}
}
//调用
User[] users = new User[] {
new User("u1001", 25),
new User("u1002", 20),
new User("u1003", 21) };
Arrays.sort(users, new UserComparator());
//也可以零时定义
// key的格式[菜单类型显示顺序:菜单类型名称]
Map<String, List<UserMenu>> map = new TreeMap<String, List<UserMenu>>(new Comparator() {
public int compare(Object o1, Object o2) {
String str1 = (String)o1;
String str2 = (String)o2;
int showOrder1 = Integer.valueOf(str1.split(":")[0]);
int showOrder2 = Integer.valueOf(str2.split(":")[0]);
return showOrder2 - showOrder1;
}
});
Comparable和Comparator实现对象比较的更多相关文章
- Java中Comparable和Comparator实现对象比较
1.通过Comparable实现排序 package Comparable; import java.util.Arrays; public class ComparableUser implemen ...
- 对象比较器:Comparable和Comparator
在进行对象数组排序的过程中需要使用到比较器,比较器有两个:Comparable和Comparator ①.java.lang.Comparable:是在类定义是时候默认实现好的接口,里面提供有一个co ...
- Java ArrayList中对象的排序 (Comparable VS Comparator)
我们通常使用Collections.sort()方法来对一个简单的数据列表排序.但是当ArrayList是由自定义对象组成的,就需要使用comparable或者comparator接口了.在使用这两者 ...
- 对象大小对比之Comparable与Comparator
一 概述 1.Comparable与Comparator使用背景 数值型数据(byte int short long float double)天生可对比大小,可排序,String实现了Compara ...
- Map集合的遍历方式以及TreeMap集合保存自定义对象实现比较的Comparable和Comparator两种方式
Map集合的特点 1.Map集合中保存的都是键值对,键和值是一一对应的 2.一个映射不能包含重复的值 3.每个键最多只能映射到一个值上 Map接口和Collection接口的不同 Map是双列集合的根 ...
- Java中Comparable与Comparator的区别
相同 Comparable和Comparator都是用来实现对象的比较.排序 要想对象比较.排序,都需要实现Comparable或Comparator接口 Comparable和Comparator都 ...
- Java中Comparable和Comparator接口区别分析
Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comp ...
- Comparable和Comparator的区别
Comparable Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较 ...
- Java中Comparable和Comparator区别小结
一.Comparable简介 Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collecti ...
随机推荐
- 关于ASPXGridview的双击事件弹出 【转】
在网上找了好长时间,关于ASPXGridview的双击事件弹出ASPxPopupControl,也没有找到适合自己的代码,这里将自己编写出来的代码与大家分享一下 希望我的代码能够对你有所帮助. 直接上 ...
- nginx 在windows平台上对asp.net做反向代理
代理服务器 当客户机向站点提出请求时,请求将转到代理服务器.然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器.内容服务器再通过该通道将结果回传给代理服务器.代理服务器将检索到的信 ...
- myeclipse2014 svn插件添加
http://blog.csdn.net/sushengmiyan/article/details/38342411
- C#动态添加属性
class DynamicInputParams: DynamicObject { Dictionary<string, object> property = new Dictionary ...
- Thinkpad T420 指纹开机 win10 解决方案
以前没感觉笔记本上的指纹有什么用,后来无意看到了指纹能开机.便尝试把这个功能给用起来.果然麻烦了些. 1.官网上没有win10的指纹应用软件. 下载了win8的版本,安装后没有问题,可以登录win10 ...
- GDB调试基本命令
一.列文件清单 list / l 列出产生执行文件的源代码的一部分 //列出 line1 到 line2 行之间的源代码 (gdb) list line1, line2 //输出从上次调用list命令 ...
- jquery操作input值总结
获取选中的值获取一组radio被选中项的值var item = $('input[@name=items][@checked]').val(); 获取select被选中项的文本var item = $ ...
- 基于云计算Iaas平台的ZStack
2015年4月,一家全新的基础架构即服务的软件产品ZStack面世.ZStack的主创人员是自在海外云计算公司的中国人.ZStack是基于Java语言,结合了OpenStack和CloudStack上 ...
- css 居中
今天来总结一下自己知道的居中方法: 一.水平居中 1.text-align:center; 文字水平居中,也可以放在父元素中,强行让子元素居中. 2.margin: 0 auto; 使子元素在父 ...
- Poco C++ MySQl demo
#include "Poco/Exception.h"#include "Poco/Data/Session.h"#include "Poco/Dat ...