1. 程式人生 > >使用Collections.sort(List,Comparator)給List排序(一)

使用Collections.sort(List,Comparator)給List排序(一)

概要

本文章,講解Collections.sort給List<String>排序的一種情況:

  • List<String>裡的內容是整數

環境

  • eclipse+JDK1.6

情景:

List<String>裡的內容是整數
  • 1
  • 2

需求:

/** 
* @date 2017-07-12 
* @author LTF 
* 把陣列排成最小的數 
* 題目描述 
* 輸入一個List集合,給集合裡的資料排序,按照正序或倒序打印出集合裡的所有資料。 
* 例如輸入集合[15,123,10,9,3] 
* 正序列印 :3,9,10,15,123 
* 倒序列印 :123,15,10,9,3 
* 思路 
* 通過Collection.sort()方法中的自定義比較器實現。若num1>num2,則說明num1滿足要求。 
*/

常規的排序方式:

    public void printListStringSort(){
        List<String> list = new ArrayList<String>();
        list.add("15");
        list.add("123");
        list.add("10");
        list.add("9");
        list.add("3");

        //常規的排序
        Collections.sort(list);

        //打印出資料
        for
(String str : list) { System.out.println( str ); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

輸出:

10
123
15
3
9
  • 1
  • 2
  • 3
  • 4
  • 5

總結:輸出的結果不是我們想要的,預設排序的是按照首字元的大小排序

自定義的排序方式:

    public void printListStringSort(){
        List<String> list = new ArrayList<String>();
        list.add("15");
        list.add("123"
); list.add("10"); list.add("9"); list.add("3"); System.out.println( "---------------升序排列----------------" ); // 升序排列 Collections.sort(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { int num1 = Integer.parseInt(o1); int num2 = Integer.parseInt(o2); if (num1 > num2) { return 1; } else if (num1 < num2) { return -1; } else { return 0; } } }); for (String str : list) { System.out.println(str); } System.out.println( "---------------降序排列----------------" ); // 降序排列 Collections.sort(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { int num1 = Integer.parseInt(o1); int num2 = Integer.parseInt(o2); if (num1 < num2) { return 1; } else if (num1 > num2) { return -1; } else { return 0; } } }); for (String str : list) { System.out.println(str); } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

輸出:

---------------升序排列----------------
3
9
10
15
123
---------------降序排列----------------
123
15
10
9
3
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

總結:輸出的結果是我們想要的結果

總結:

使用Collections.sort(List<T>,Comparator<T>),可以做到給特殊的需求排序。首先我們需要實現Comparator介面,重寫public int compare(Object o1, Object o2) 方法。上述的案例裡,T是String,我們在獲取資料時,就能直接得到String資料。 
已知List<String>裡的內容是整數的情況下,我們把資料轉化為整數型別,然後用整數去比較,最後得出排序結果。

Created by 劉天方