Java堂  


按照指定的类型排序

Filed under: JavaPlateform — Jet @ 10:50 下午
Tags:
原文出处: 按照指定的类型排序
作者: 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)]

Java中文排序

Filed under: JavaPlateform — Jet @ 9:57 下午
Tags:
原文出处: Java中文排序
作者: Jet Mah from Java堂
声明: 可以非商业性任意转载, 转载时请务必以超链接形式标明文章原始出处、作者信息及此声明!

所谓中文排序就是按照汉语拼音的顺序进行排序,在Java中进行排序其实不需要自己来写算法,java.util.Arrays类中提供的sort方法可以直接实现这个功能。

具体举个例子来说明。

  1. import java.util.*;
  2. import java.text.*;
  3.  
  4. public class SortByChinese { 
  5.    
  6.     public static void main(String[] args) { 
  7.         // Collator 类是用来执行区分语言环境的 String 比较的,这里选择使用CHINA
  8.         Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);
  9.         String[] arr = {"张三", "李四", "王五", "刘六"};
  10.         // 使根据指定比较器产生的顺序对指定对象数组进行排序。
  11.         Arrays.sort(arr, cmp);
  12.         for (int i = 0; i < arr.length; i++) 
  13.             System.out.println(arr[i]);
  14.         System.out.println();
  15.     } 
  16. }

参考资料:
在js和java中中文排序