歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java比較器對數組 集合排序

數組排序非常簡單,有前輩們的各種排序算法,再加上Java中強大的數組輔助類Arrays與集合輔助類Collections,使得排序變得非常簡單,如果說結合比較器Comparator接口和Collator類及其子類RuleBasedCollator,能將排序發揮到極致。

1.默認規則的排序
  1. String[] array = {"動作","劇情","情感","驚悚""動畫""紀錄"};  
  2. List<String> list = new ArrayList<String>();  //該List中放有和array數組同樣的數據   
  3. Arrays.sort(array);  //數組排序   
  4. Collections.sort(list);  //集合排序  

輸出結果: 劇情-->動作-->動畫-->情感-->驚悚-->紀錄
很明顯,不是我們要的結果,原因是系統並不知道按什麼順序去排,所以默認為按自然順序處理。要達到我們的目的,就得指定相應的排序規則,如按照中文語言排序,請看下面。
2.帶比較器的排序
  1. public MyComparator implements Comparator<String>{  
  2.     @Override  
  3.     public int compare(String o1, String o2) {  
  4.         return Collator.getInstance(Locale.CHINA).compare(o1, o2);  //注意 :Locale.CHINA   
  5.     }  
  6. }   
排序:
  1. MyComparator  myomparator = new MyComparator();  
  2. Array.sort( array, myomparator); //帶比較器的數組排序   
  3. Collections.sort(list, myomparator); //帶比較器的集合排序   

輸出結果:  動畫-->動作-->紀錄-->驚悚-->劇情-->情感 這次結果正確,而且從結果可以看出,該排序是穩定的。
總結:     排序器是需要指定語種的,如我們使用了Locale.CHINA,當然還有其它的,這樣就做到了對中文按首字母排序的功能。可是需求往往是很神奇的,如要排序的不是字符串,而是對象,甚至這些對象是放在集合中,那麼如何針對集合中的對象進行排序呢,請看下篇,http://www.linuxidc.com/Linux/2011-11/46609p2.htm。
Copyright © Linux教程網 All Rights Reserved