Collections.sort的兩種用法

Java代碼  收藏代碼
  1. /** 
  2. * @author guwh 
  3. * @version 創建時間:2011-11-3 上午10:49:36 
  4. * 類說明 
  5. */   
  6. package com.jabberchina.test;  
  7.   
  8. import java.util.ArrayList;  
  9. import java.util.Collections;  
  10. import java.util.Comparator;  
  11. import java.util.List;  
  12.   
  13. public class SortTest {  
  14.       
  15.       
  16.       
  17.     public static void main(String[] args) {  
  18.         List<String> lists = new ArrayList<String>();  
  19.         List<A> list = new ArrayList<A>();  
  20.         List<B> listB = new ArrayList<B>();  
  21.         lists.add("5");  
  22.         lists.add("2");  
  23.         lists.add("9");  
  24.         //lists中的對象String 本身含有compareTo方法,所以可以直接調用sort方法,按自然順序排序,即升序排序  
  25.         Collections.sort(lists);  
  26.           
  27.         A aa = new A();  
  28.         aa.setName("aa");  
  29.         aa.setOrder(1);  
  30.         A bb = new A();  
  31.         bb.setName("bb");  
  32.         bb.setOrder(2);  
  33.         list.add(bb);  
  34.         list.add(aa);  
  35.         //list中的對象A實現Comparable接口  
  36.         Collections.sort(list);  
  37.           
  38.         B ab = new B();  
  39.         ab.setName("ab");  
  40.         ab.setOrder("1");  
  41.         B ba = new B();  
  42.         ba.setName("ba");  
  43.         ba.setOrder("2");  
  44.         listB.add(ba);  
  45.         listB.add(ab);  
  46.         //根據Collections.sort重載方法來實現  
  47.         Collections.sort(listB,new Comparator<B>(){  
  48.             @Override  
  49.             public int compare(B b1, B b2) {  
  50.                 return b1.getOrder().compareTo(b2.getOrder());  
  51.             }  
  52.               
  53.         });  
  54.           
  55.         System.out.println(lists);  
  56.         System.out.println(list);  
  57.         System.out.println(listB);  
  58.           
  59.     }  
  60.   
  61. }  
  62.   
  63. class A implements Comparable<A>{  
  64.     private String name;  
  65.     private Integer order;  
  66.     public String getName() {  
  67.         return name;  
  68.     }  
  69.     public void setName(String name) {  
  70.         this.name = name;  
  71.     }  
  72.       
  73.     public Integer getOrder() {  
  74.         return order;  
  75.     }  
  76.     public void setOrder(Integer order) {  
  77.         this.order = order;  
  78.     }  
  79.     @Override  
  80.     public String toString() {  
  81.         return "name is "+name+" order is "+order;  
  82.     }  
  83.     @Override  
  84.     public int compareTo(A a) {  
  85.         return this.order.compareTo(a.getOrder());  
  86.     }  
  87.       
  88. }  
  89.   
  90. class B{  
  91.     private String name;  
  92.     private String order;  
  93.     public String getName() {  
  94.         return name;  
  95.     }  
  96.     public void setName(String name) {  
  97.         this.name = name;  
  98.     }  
  99.     public String getOrder() {  
  100.         return order;  
  101.     }  
  102.     public void setOrder(String order) {  
  103.         this.order = order;  
  104.     }  
  105.     @Override  
  106.     public String toString() {  
  107.         return "name is "+name+" order is "+order;  
  108.     }  
  109. }  
  110.   
  111. 打印的結果爲:  
  112.  [259]  
  113. [name is aa order is 1, name is bb order is 2]  
  114. [name is ab order is 1, name is ba order is 2]  
發佈了159 篇原創文章 · 獲贊 10 · 訪問量 45萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章