一. 使用Collections.sort(List<T>,Comparator<T>)
给List<String>
排序
常规的排序方式
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 );
}
}
输出:
10
123
15
3
9
总结:输出的结果不是我们想要的,默认排序的是按照首字符的大小排序
1. 自定义的排序方式:
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);
}
}
输出:
---------------升序排列----------------
3
9
10
15
123
---------------降序排列----------------
123
15
10
9
3
总结:输出的结果是我们想要的结果
2. 总结:
使用Collections.sort(List,Comparator)
,可以做到给特殊的需求排序。首先我们需要实现Comparator接口,重写public int compare(Object o1, Object o2) 方法。上述的案例里,T是String,我们在获取数据时,就能直接得到String数据。
已知List
里的内容是整数的情况下,我们把数据转化为整数类型,然后用整数去比较,最后得出排序结果。
网友评论