对象的比较Comparable与Comparator
来源:互联网 发布:手机淘宝店招尺寸像素 编辑:程序博客网 时间:2024/05/19 09:47
ArrayList数组要进行排序的时候可以通过Collections.sort()方法完成,如
List<T> n=new ArrayList<T>();Collections.sort(n);
注意这里的T不能是你自己定义的类,可以是String、Integer等一些常用类
要是你希望对自己写的类进行排序的时候必须要使用Comparable这个接口,而且必须重写compareTo()方法(让sort()根据你指定的变量排序,不然sort()不知道怎么排序)
class Name implements Comparable<Name>{ private String name; private int num; public Name(String name,int num) { // TODO Auto-generated constructor stub this.name=name; this.num=num; } public String getName(){ return name; } public int getNum(){ return num; } @Override public int compareTo(Name o) { // TODO Auto-generated method stub return name.compareTo(o.name); } public String toString(){ return name; }}public class Test { public Test() { // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub List<Name> n=new ArrayList<Name>(); n.add(new Name("张三", 7)); n.add(new Name("王五", 4)); n.add(new Name("李四", 8)); n.add(new Name("赵六", 1)); Collections.sort(n);//这里是根据name值进行排序 System.out.println(n); }}
控制台输出结果
[张三, 李四, 王五, 赵六]
当然,上面程序是根据Name这个类中的name变量进行排序的,但如果我们还需要一组根据num变量排序的数组时,这时我们就会使用到Comparator这个接口了
class Name implements Comparable<Name>{ private String name; private int num; public Name(String name,int num) { // TODO Auto-generated constructor stub this.name=name; this.num=num; } public String getName(){ return name; } public int getNum(){ return num; } @Override public int compareTo(Name o) { // TODO Auto-generated method stub return name.compareTo(o.name); } public String toString(){ return name; }}//由于Name类,排序的话是根据name来排序,如过还需要一个跟据num排序的,则一个Name显然不够,故在创建一个新类,所以我们定义一个外部类class NameSecond implements Comparator<Name>{ @Override public int compare(Name o1, Name o2) { // TODO Auto-generated method stub return o1.getNum()-o2.getNum();//要比较int类型只需相减即可 }}public class Test { public Test() { // TODO Auto-generated constructor stub } public static void main(String[] args) { // TODO Auto-generated method stub List<Name> n=new ArrayList<Name>(); n.add(new Name("张三", 7)); n.add(new Name("王五", 4)); n.add(new Name("李四", 8)); n.add(new Name("赵六", 1)); Collections.sort(n);//这里是根据name值进行排序 System.out.println(n); NameSecond second=new NameSecond(); Collections.sort(n,second);//这里是根据num值进行排序,Collection.sort()不能对Set进行排序 System.out.println(n); }}
控制台输出
[张三, 李四, 王五, 赵六]
[赵六, 王五, 张三, 李四]
0 0
- 对象的比较Comparable与Comparator
- 对象的比较comparable与comparator
- Comparable与Comparator的比较
- Comparable与Comparator的比较
- Comparable与Comparator的比较
- Comparable 与 Comparator 比较
- Java的比较接口 Comparable与Comparator
- Comparable与Comparator之比较
- comparator与Comparable比较器
- 对象的比较--Comparable接口和Comparator接口的使用
- 对象排序Comparator与Comparable
- Comparable和Comparator的比较
- Comparable和Comparator的比较
- comparator接口与Comparable接口的区别【比较】
- Java中常用的比较器Comparable与Comparator
- Comparable和Comparator之对象比较
- Comparable和Comparator实现对象比较
- java对象比较规则:Comparable & Comparator
- 【第五章】Spring表达式语言 之 5.4在Bean定义中使用EL—跟我学spring3
- 安卓齿轮动画
- django shell python-mysqldb
- 代理的作用
- Linux内核符号表
- 对象的比较Comparable与Comparator
- 64位Win8系统,Pl/SQL连接Oracle设置
- libevent源码深度剖析十二
- HTML5学习笔记-SVG 标签
- 用注解的方式实现servlet
- 陈怡暖:担忧国内经济,贵金属全线收阴,该怎么办?
- NSRecursiveLock递归锁的使用
- django shell python-mysqldb
- SQL Server 表和索引存储结构