java比较器Comparable和Comparator的使用
2014-08-31 11:18
344 查看
java的比较器有两类,分别是Comparable接口和Comparator接口。
在为对象数组进行排序时,比较器就有非常大的作用
1、使用comparable接口,需要重写
例子:
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接口,需要重写
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;
}
}
}
在为对象数组进行排序时,比较器就有非常大的作用
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;
}
}
}
相关文章推荐
- Java常用类库——Arrays类(用于普通数组操作)、比较器(Comparable、Comparator 用于对象排序)的使用
- java底层比较器Comparable和Comparator比较对象时的使用
- java内外部比较器(Comparator、Comparable)使用场景与详解
- java comparable comparator 比较器的使用 及 自定义比较器
- java学习笔记13--比较器(Comparable、Comparator)
- Java基础之一组有用的类——使用比较器对数组排序(TrySortingWithComparator)
- java比较器Comparator 使用
- Java比较器(Comparable、Comparator)
- java中Comparable接口和Comparator接口的使用
- java学习笔记13--比较器(Comparable、Comparator)
- JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序
- Java中Comparator接口和Comparable接口的使用
- java中TreeSet的Comparator比较器的三种使用方法
- Java原来如此-比较器(Comparable、Comparator)
- java学习笔记13--比较器(Comparable、Comparator)
- JAVA常用类库---比较器(Comparable、Comparator)
- Java常用类库--Arrays、比较器(comparable、Comparator)
- 【Java常用类库】_比较器(Comparable、Comparator)笔记
- java 接口Comparable和Comparator的使用
- java学习笔记13--比较器(Comparable、Comparator)