现在的位置: 首页 > 综合 > 正文

Comparable与Comparator的比较

2018年01月29日 ⁄ 综合 ⁄ 共 2282字 ⁄ 字号 评论关闭

Comparable与Comparator两个都应用与排序。

Comparable与Comparator比较

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

 

 

 

 

抱歉!评论已关闭.