使用Collections.sort(List<T>,Comparator<? super T>)给List<String>排序
2017-08-30 15:40
507 查看
个人网站:www.itlantian.top
www.blueskyui.cn
================================================================================
/**
* 输入一个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 );
}
}
输出:
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);
}
}
输出:
---------------升序排列----------------
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>里的内容是整数的情况下,我们把数据转化为整数类型,然后用整数去比较,最后得出排序结果。
相关文章推荐
- 使用Collections.sort(List<T>,Comparator<? super T>)给List<String>排序(一)
- 使用Collections.sort(List<T>,Comparator<T>)给List<String>排序(一)
- 使用Collections.sort(List<T>,Comparator<T>)给List<String>排序(一)
- 剑指Offer——巧妙使用sort(List<T>,Comparator<? super T>)比较器
- 剑指Offer——巧妙使用sort(List<T>,Comparator<? super T>)比较器
- Collections.sort(List<T> list, Comparator<? super T> c) 源代码分析
- Collections.sort(List<T> list, Comparator<? super T> c) 应用
- 【Java】如何给List集合排序Collections.sort(list,new Comparator<Entity>)
- sort(List<T> list, Comparator<? super T> c) 根据比较器产生的顺序排序
- Collections.sort(List<T> Comparator) 自定义排序
- Java关于List<String> 进行排序,重写Comparator()方法
- Java List<>排序——重载Collections.sort方法
- 实战c++中的vector系列--使用sort算法对vector进行排序(对vector<string>排序、使用稳定的排序std::stable_sort())
- 实战c++中的vector系列--使用sort算法对vector<unique_ptr<string>>进行排序(sort函数“应输入 2 个参数,却提供了 3 个)
- 集合中按照商品价格排序,按照学生编号排序,Collections集合里的sort方法,Comparator<T>接口,Comparable<T>接口,
- java Arrays.sort(T[] a, Comparator<? super T> c)调用一个已经封装好的排序规则进行排序
- 实体类集合(List<Object>)根据实体类的一个或者多个属性对集合进行排序-Collections.sort
- java根据时间排序list,使用collections.sort()
- 两个List<String>合并,HashSet去重复,并且排序
- 使用Collections.sort方法对list排序的两种方法