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

java比较器Comparable和Comparator的使用

2014-08-31 11:18 344 查看
java的比较器有两类,分别是Comparable接口和Comparator接口。

在为对象数组进行排序时,比较器就有非常大的作用

1、使用comparable接口,需要重写
compareTo(T
o)
 方法,在其中定义排序规则,那么就可以直接调用java.util.Arrays.sort()来排序对象数组,

例子:

package com.yaoxun.test;

public class Student implements Comparable<Student> {

private int score;

private int age;

@Override
public int compareTo(Student o) {
if(this.score > o.score)
return 1;
else if(this.score < o.score)
return -1;
else {
if(this.age > o.age)
return 1;
else if(this.age < o.age)
return -1;
else
return 0;
}
}

}


2、使用Comparator接口,需要重写
compare(T o1,
T o2)
 方法,
package edu.sjtu.ist.comutil;

import java.util.Comparator;

class Student {
private String name;
private int age;
private float score;

public Student(String name, int age, float score) {
this.name = name;
this.age = age;
this.score = score;
}

public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getScore() {
return score;
}
public void setScore(float score) {
this.score = score;
}

public String toString()
{
return name+"\t\t"+age+"\t\t"+score;
}

}

class StudentComparator implements Comparator<Student>{

@Override
public int compare(Student o1, Student o2) {
// TODO Auto-generated method stub
if(o1.getScore()>o2.getScore())
return -1;
else if(o1.getScore()<o2.getScore())
return 1;
else{
if(o1.getAge()>o2.getAge())
return 1;
else if(o1.getAge()<o2.getAge())
return -1;
else
return 0;
}
}

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