java.lang.Comparable<T> |
java.util.Comparator<T> |
实现方法:int compareTo(T o) |
实现方法:int compare(T o1, To2) |
返回:负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。 | 返回:根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。 |
异常:ClassCastException - 如果指定对象的类型不允许它与此对象进行比较。 |
异常:ClassCastException - 如果参数的类型不允许此 Comparator 对它们进行比较 |
必须修改想排序其实例的类 | 使用时需要构建一个类 |
只可以创建一个排序序列 | 可以创建多个排序序列 |
以下是两个应用两个接口的实例:
1、应用comparator
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Book {
private String title;
private double price;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public static void main(String argu[]){
Book b1=new Book();
b1.setPrice(23.2);
b1.setTitle("abstruts");
Book b2=new Book();
b2.setPrice(21.2);
b2.setTitle("dog");
List<Book> list=new ArrayList<Book>();
list.add(b2);
list.add(b1);
for(Book b:list){
System.out.println(b.title);
}
System.out.println("after sort");
BookComparator bct=new BookComparator();
Collections.sort(list, bct);
for(Book b:list){
System.out.println(b.title);
}
}
}
class BookComparator implements Comparator<Book>{
public int compare(Book s1,Book s2) {
return s1.getTitle().compareTo(s2.getTitle());
}
}
输出:
dog
abstruts
after sort
abstruts
dog
2、应用comparable:
package connections;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class OldBook implements Comparable<OldBook>{
private String title;
private double price;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public static void main(String argu[]){
OldBook b1=new OldBook();
b1.setPrice(23.2);
b1.setTitle("abstruts");
OldBook b2=new OldBook();
b2.setPrice(21.2);
b2.setTitle("dog");
List<OldBook> list=new ArrayList<OldBook>();
list.add(b2);
list.add(b1);
for(OldBook b:list){
System.out.println(b.getTitle());
}
System.out.println("after sort");
Collections.sort(list);
for(OldBook b:list){
System.out.println(b.getTitle());
}
}
@Override
public int compareTo(OldBook oldbook) {
return this.title.compareTo(oldbook.getTitle());
}
}
输出:
dog
abstruts
after sort
abstruts
dog