Comparable接口: 实现该接口让类支持排序
package java.util;
import java.util.*;
public interface Comparable<T>{
public int compareTo(T o);
}
关于Comparable的使用:
package work;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.TreeSet;
public class Person implements Comparable{
int age;
String name;
int height;
@Override
public int compareTo(Object arg0) {
Person person=(Person) arg0;
return this.age-person.age;
}
public Person(int age,String name,int height){
this.age=age;
this.name=name;
this.height=height;
}
public static void main(String args[]){
Person person=new Person(12,"小红",164);
Person person1=new Person(15,"小军",165);
Person person2=new Person(13,"小明",180);
List<Person> list=new ArrayList<Person>();
list.add(person);
list.add(person1);
list.add(person2);
for(Person p:list){
System.out.print(p.name+"\n");
}
//如果Person没有实现Comparable接口将不能使用该方法
Collections.sort(list);
for(Person p:list){
System.err.print(p.name+"\n");
}
}
}
输出结果为:
小红
小军
小明
小红
小明
小军
Comparator接口:该接口是比较器
package java.util;
public interface Comparator<T>{
//必须实现
int compare(T o1,T o2);
//可以不实现因为任何类都默认实现了equals(Object obj)方法
boolean equals(Object obj);
}
关于Comparator的使用:
package work;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Person1 {
int age;
String name;
int height;
public Person1(int age,String name,int height){
this.age=age;
this.name=name;
this.height=height;
}
public static void main(String args[]){
Person1 person=new Person1(12,"小红",174);
Person1 person1=new Person1(15,"小军",165);
Person1 person2=new Person1(13,"小明",180);
List<Person1> list=new ArrayList<Person1>();
list.add(person);
list.add(person1);
list.add(person2);
Collections.sort(list,new ageComparator());
for(Person1 p:list){
System.out.print(p.name+"\n");
}
Collections.sort(list,new heightComparator());
for(Person1 p:list){
System.out.print(p.name+"\n");
}
}
static class ageComparator implements Comparator{
@Override
public int compare(Object arg0, Object arg1) {
Person1 person1=(Person1) arg0;
Person1 person2=(Person1) arg1;
return person1.age-person2.age;
}
}
static class heightComparator implements Comparator{
@Override
public int compare(Object arg0, Object arg1) {
Person1 pserson1=(Person1) arg0;
Person1 pserson2=(Person1) arg1;
return pserson2.height-pserson1.height;
}
}
}
输出结果:
小红
小明
小军
小明
小红
小军