比较器是个很方便的工具
一般定义格式为
public static class 类名 implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
return o1 - o2;//升序
//return o2 - o1;降序
}
}
对于一个类来说,比如图书类,定义一个比较器之后,就可以对图书类的价格属性进行排序,升序降序都可以。也可以对图书类的名字进行排序。
在创建集合类的时候传入一个比较器对象,系统就会识别比较器中的方法了。
例如:
TreeSet<Book> treeset = new TreeSet<Book>(new MyComparator());
下面是使用TreeSet集合+比较器对图书类价格实现的升序排序
package test;
import java.util.Comparator;
import java.util.TreeSet;
public class 比较器的使用 {
public static class Book{
String name;
int price;
public Book(String name, int price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "Book:" + name + " Price:" + price;
}
}
/**
*
* @author Administrator
* 升序比较器,降序只要将b1,b2换个顺序即可
*/
public static class MyComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
Book b1 = (Book) o1;
Book b2 = (Book) o2;
return b1.price - b2.price;
}
}
public static void main(String[] args) {
TreeSet<Book> treeset = new TreeSet<Book>(new MyComparator());
treeset.add(new Book("动物世界",50));
treeset.add(new Book("时间简史",25));
treeset.add(new Book("探索发现",60));
treeset.add(new Book("恐龙时代",20));
System.out.println(treeset);
}
}