比如有三本书,书名和价格分别如下:《猎物》18.4元、《大明王朝》59.0元、《快乐密码》25.0元。前几天的一篇文章中讲到按照中文拼音进行排序,这里如果想按照价格排序的话怎么办?
其实这里就牵涉到在Java中怎样对对象进行排序处理,这里可以使用 java.util.Collections的sort(List list) 方法。这里需要说明的是中间的list中存放的类必须实现 java.lang.Comparable 接口,这个接口只有一个方法:int compartTo(Object o),当本对象比传入的对象大时,返回一个正整数。
下面是实现的代码,大家可以自己理解一下:
import java.util.ArrayList;
import java.util.Collections;
public class ComparableBook implements Comparable {
private String name;
private double price;
public ComparableBook(String name, double price) {
this.name = name;
this.price = price;
}
public int compareTo(Object o) {
ComparableBook other = (ComparableBook)o;
return (int)price - (int)other.price;
}
public String toString() {
return "(name: " + name + ", price: " + price + ")";
}
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new ComparableBook("猎物", 18.4));
list.add(new ComparableBook("大明王朝", 59.0));
list.add(new ComparableBook("快乐密码", 25.4));
Collections.sort(list);
System.out.println(list);
}
}
输出结果:
[(name: 猎物, price: 18.4), (name: 快乐密码, price: 25.4), (name: 大明王朝, price: 59.0)]