Java堂  


按照指定的类型排序

归档在: JavaPlateform — Jet @ 10:50 下午
Tags:
原文出处: http://www.javatang.com/archives/2007/03/13/5026128.html
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

比如有三本书,书名和价格分别如下:《猎物》18.4元、《大明王朝》59.0元、《快乐密码》25.0元。前几天的一篇文章中讲到按照中文拼音进行排序,这里如果想按照价格排序的话怎么办?

其实这里就牵涉到在Java中怎样对对象进行排序处理,这里可以使用 java.util.Collections的sort(List list) 方法。这里需要说明的是中间的list中存放的类必须实现 java.lang.Comparable 接口,这个接口只有一个方法:int compartTo(Object o),当本对象比传入的对象大时,返回一个正整数。

下面是实现的代码,大家可以自己理解一下:

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3.  
  4. public class ComparableBook implements Comparable {
  5.  
  6. private String name;
  7.  
  8. private double price;
  9.  
  10. public ComparableBook(String name, double price) {
  11. this.name = name;
  12. this.price = price;
  13. }
  14.  
  15. public int compareTo(Object o) {
  16. ComparableBook other = (ComparableBook)o;
  17.  
  18. return (int)price - (int)other.price;
  19. }
  20.  
  21. public String toString() {
  22. return "(name: " + name + ", price: " + price + ")";
  23. }
  24.  
  25. public static void main(String[] args) {
  26. ArrayList list = new ArrayList();
  27. list.add(new ComparableBook("猎物", 18.4));
  28. list.add(new ComparableBook("大明王朝", 59.0));
  29. list.add(new ComparableBook("快乐密码", 25.4));
  30. Collections.sort(list);
  31. System.out.println(list);
  32. }
  33.  
  34. }

输出结果:
[(name: 猎物, price: 18.4), (name: 快乐密码, price: 25.4), (name: 大明王朝, price: 59.0)]

没有评论 »

还没有评论。

发表您的评论