使用Collections.sort(List,Comparator)給List排序(一)
阿新 • • 發佈:2019-01-31
概要
本文章,講解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 劉天方