java对象比较接口:Comparable
1、新建一个实体类:package com.gwolf.crud.bean;public class Book { private String title; private double price; public Book(String title, double price) { this.title = title; this.price = price; } @Override public String toString() { return super.toString(); } 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; }}

2、在main方法中使用Arrays.sort()方法比较两个对象的大小。package com.gwolf.crud.utils;import java.util.Arrays;import com.gwolf.crud.bean.Book;public class TestDemo { public static void main(String[] args) { Book books[] = new Book[]{new Book("a",145), new Book("a",25),new Book("a",10)}; Arrays.sort(books); }}

3、运行此main方法:Exception in thread "main" java.lang.ClassCastException: com.gwolf.crud.bean.Book cannot be cast to java.lang.Comparable at java.util.ComparableTimSort.countRunAndMakeAscending(ComparableTimSort.java:320) at java.util.ComparableTimSort.sort(ComparableTimSort.java:188) at java.util.Arrays.sort(Arrays.java:1246) at com.gwolf.crud.utils.TestDemo.main(TestDemo.java:13)

4、出现了一个异常是因为两个没有关系的类对象发生了转换异常。我们的vo对象没有实现Comparable接口。

5、重新编写vo的实现类,实现Comparable接口。package com.gwolf.crud.bean;public class Book implements Comparable<Book>{ private String title; private double price; public Book(String title, double price) { this.title = title; this.price = price; } @Override public String toString() { return super.toString(); } 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; } @Override public int compareTo(Book o) { return new Double(o.getPrice()).compareTo(this.getPrice()); }}

6、重新运行main方法中的程序,结果已经根据价格排序了。
