设为首页 加入收藏

TOP

使用Comparator进行两个Object的比较(一)
2014-11-24 12:02:32 来源: 作者: 【 】 浏览:118
Tags:使用 Comparator 进行 两个 Object 比较
定义一个Person类:
public class Person{
private String name;
private double salary;
private String dept;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public Person() {
}
public Person(String name, double salary, String dept) {
this.name = name;
this.salary = salary;
this.dept = dept;
}
@Override
public String toString() {
StringBuffer sBuffer = new StringBuffer("");
sBuffer.append(this.getName()+","+this.getSalary()+","+this.getDept());
return sBuffer.toString();
}
}
下面是用于比较两个Person的测试方法:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class MainMethod {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List personList = new ArrayList();
personList.add(new Person("老李",5890.78,"管委会"));
personList.add(new Person("泽民",10000,"管委会"));
personList.add(new Person("呼呼",2000.34,"管委会"));
Collections.sort(personList,new Comparator(){
public int compare(Object o1, Object o2) {
Person p1 = (Person)o1;
Person p2 = (Person)o2;
return (int)(p2.getSalary() - p1.getSalary())*100;
}
});
Person iterPerson;
for (int i = 0; i < personList.size(); i++) {
iterPerson = personList.get(i);
System.out.println(iterPerson.toString());
}
}
}
加红色字体部分为核心代码,上述的方法适用于Person对象没有实现Comparable接口,则我们会告诉Collections工具类,我们用于比较的比较器。
如果继承了Comparable接口的时候代码如下:
下面这个是Person类:
public class Person implements Comparable{
private String name;
private double salary;
private String dept;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public Person() {
}
public Person(String name, double salary, String dept) {
this.name = name;
this.salary = salary;
this.dept = dept;
}
@Override
public String toString() {
StringBuffer sBuffer = new StringBuffer("");
sBuffer.append(this.getName()+","+this.getSalary()+","+this.getDept());
return sBuffer.toString();
}
public int compareTo(Person o) {
return (int)(o.getSalary()-getSalary())*100;
}
}
下面这个是比较两个Person的测试方法:
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MainMethod {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
List personList = new ArrayList();
personList.add(new Person("老刘",5890.78,"管委会"));
personList.add(new Person("泽民",10000,"管委会"));
personList.add(new Person("呼呼",2000.34,"管委会"));
Collections.sort(personList);
Person iterPerson;
for (int i = 0; i < personList.size(); i++) {
iterPerson = personList.get(i);
System.out.println(iterPerson.toString());
}
}
}
这里面会有另外一个问题,如果我的元素实现了Comp
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java Jdbc减少与Oracle之间交互提.. 下一篇Spring auto wire(自动装配) 的..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: