您的位置:首页 > 编程语言 > Java开发

白菜之comparable的用法

2016-07-21 14:57 429 查看
package com.example.eleven;

/**
* @author Administrator 公共类Employee首先实现接口Comparable
*         然后建立本类带参数构造函数,重载toString和compareTo方法
*/
public class Employee implements Comparable<Employee> {
private String name;
private int id;
private String count;

public Employee(int id, String name, String count) {
this.count = count;
this.id = id;
this.name = name;
}

@Override
public String toString() {
StringBuilder aa = new StringBuilder();
aa.append(id);
aa.append(name);
aa.append(count);
return aa.toString();
}

<span style="color:#ff0000;">@Override
public int compareTo(Employee x) {
if (this.count.compareTo(x.count) > 0) {//如果是int型对比,那么直接this.id>x.id--->return 1;
return -1;//这里如果写return 1;下面改成return -1,那么就是从小到大排列,这里是从大到小顺序排列
} else if (this.count.compareTo(x.count) < 0) {
return 1;
}
return 0;
</span>	}
}
package com.example.eleven;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
<span style="color:#ff6666;">* java中Comparable接口,任何实现此接口的类,都可以按照自己的意愿来实现对一组数据的排列
* 这里需要指出的是,任何实现Comparable<T>的类,都需要重写比较方法compareTo()。
* 在compareTo()里面可以根据数据的id进行比较,或者按照Sting的首字母进行比较,
* 虽然最后返回的int值只有正数,负数,0,但是可以调整比较参数来调整从大到小还是从小到大顺序排序,刁刁滴!
* 然后在调用类中实现collections.sort();方法就可以了,如果是保存在数组中,那么使用Array.sort()就可以了。
</span> */
public class Test {
public static void main(String[] args) {
List<Employee> list = new ArrayList<Employee>();
list.add(new Employee(2, "东方", "A"));
list.add(new Employee(25, "西方", "D"));
list.add(new Employee(45, "南方", "W"));
list.add(new Employee(15, "北方", "B"));
list.add(new Employee(5, "东方", "S"));
System.out.println("下面看是对比两种情况的数据排列!=-----------");
for (Employee x : list) {
System.out.println(x);
}
System.out.println("下面是用sort方法排列的,从小到大顺序进行排列=-----------");
<span style="color:#ff0000;">Collections.sort(list);
</span>		for (Employee y : list) {
System.out.println(y);
}
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息