一、Comparator:
public interface Comparator<T> {
public int compara(T o1, T o2);
public boolean equals(Object obj);
}
1、真正要实现的只有compare()方法,需要单独准备出一个类来实现Comparator接口,这个类将作为指定类的排序类;
2、Compara接口的时候利用的是Arrays类中的sort()方法进行排序,Comparator接口使用被重载的sort()方法:
public static<T>void sort(T[]a,Comparator<?super T>c);
示例代码:
public class Book {
private String name;
private double price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public Book(String name ,double price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "书名:" + name + "价格:" + price;
}
}
//排序类
class BookComparator implements Comparator<Book> {
@Override
public int compare(Book o1, Book o2) {
if(o1.getPrice() > o2.getPrice()) {
return 1;
}else if(o1.getPrice() < o2.getPrice()) {
return -1;
}else{
return 0;
}
}
}
public class TestDemo {
public static void main(String[] args) {
Book[] book = new Book[]{
new Book("java开发",79.6),
new Book("Android开发",88.6),
new Book("php开发",56.9),
new Book("java开发",79.6)
};
//对象数组排序,一定要先调用此方法
Arrays.sort(book,new BookComparator());
System.out.println(Arrays.toString(book));
}
}
——————————————————————–总结:
1、使用Comparator比较麻烦,需要定义一个专门的排序类,一般情况下建议使用Comparable接口