Comparator列表排序
来源:互联网 发布:ubuntu 16.04网络配置 编辑:程序博客网 时间:2024/05/17 07:38
在java.util包中有一个Collections类,里面实现了对列表排序的功能,提供了一个静态方法sort方法,接收一个列表和一个Comparator接口的实例
实现的大致步骤如下:
1,先把列表转换为数组
2,通过Arrays的sort方法对数组排序,传入Comparator接口的实例
3,然后再把排好序的数组的数值设置到原来的列表对象中去
如果Comparator接口的compare方法返回一个小于0的数,表示被比较的两个对象中,前者小于后者
见下面的实例
要排序的对象:
Java代码
1.package collectionsSort;
2.//用户数据的模型
3.public class UserModel {
4.
5. private String userName,userId;
6. private int age;
7. public String getUserName() {
8. return userName;
9. }
10. public String getUserId() {
11. return userId;
12. }
13. public int getAge() {
14. return age;
15. }
16. public UserModel(String userName, String userId, int age) {
17. this.userName = userName;
18. this.userId = userId;
19. this.age = age;
20. }
21.
22. public String toString(){
23. return "userName="+userName+",userId="+userId+",age="+age;
24. }
25.}
package collectionsSort;
//用户数据的模型
public class UserModel {
private String userName,userId;
private int age;
public String getUserName() {
return userName;
}
public String getUserId() {
return userId;
}
public int getAge() {
return age;
}
public UserModel(String userName, String userId, int age) {
this.userName = userName;
this.userId = userId;
this.age = age;
}
public String toString(){
return "userName="+userName+",userId="+userId+",age="+age;
}
}
排序的测试端
Java代码
1.package collectionsSort;
2.
3.import java.util.ArrayList;
4.import java.util.Collections;
5.import java.util.Comparator;
6.import java.util.List;
7.
8.//直接使用Collections来排序
9.public class Client {
10.
11. public static void main(String[] args) {
12.// 准备要测试的数据
13. UserModel um1 = new UserModel("u1","user1",21);
14. UserModel um2 = new UserModel("u2","user2",24);
15. UserModel um3 = new UserModel("u3","user3",25);
16. UserModel um4 = new UserModel("u4","user4",22);
17.
18. //添加到列表中
19. List<UserModel> list = new ArrayList<UserModel>();
20. list.add(um1);
21. list.add(um2);
22. list.add(um3);
23. list.add(um4);
24.
25. System.out.println("排序前-------------");
26. printList(list);
27.
28. //实现比较器,也可以单独用一个类来实现
29. Comparator c = new Comparator(){
30.
31. @Override
32. public int compare(Object arg0, Object arg1) { //这里实现按照用户年龄大小来排序
33.
34. UserModel temp1 = (UserModel) arg0;
35. UserModel temp2 = (UserModel) arg1;
36.
37. if(temp1.getAge()>temp2.getAge())return 1;
38. else if(temp1.getAge()<temp2.getAge())return -1;
39. else if(temp1.getAge()==temp2.getAge())return 0;
40. return 0;
41. }
42.
43. };
44.
45. //排序,主要就是依靠Comparator接口的具体实现
46. Collections.sort(list,c);
47.
48. System.out.println("排序后-------------");
49. printList(list);
50.
51. }
52.
53. private static void printList(List<UserModel> list) {
54. for(UserModel um:list){
55. System.out.println(um);
56. }
57. }
58.
59.}
- Comparator列表排序
- Android 基于 Comparator 对象列表数组排序
- Collections结合Comparator实现对列表的快速排序
- Comparator排序
- 使用Comparator 接口 排序
- Comparator对Map排序!
- 集合排序 Comparator Comparable
- 对象排序:Comparator&Comparable
- Comparator方式排序
- comparator对list排序
- 集合排序 Comparator Comparable
- Comparator实现字符串排序
- 用Comparator 排序
- Comparator集合排序
- Comparator排序集合
- Comparator和Comparable排序
- Java Comparator 排序
- Comparator实现List排序
- android NDK的android.mk文件的详解
- jquery 选择器的强大总结
- [深夜原创]C# Monitor通知机制的一个有趣的实例
- 函数指针与软件设计
- 打开指定文件夹并选中文件,打开指定文件 .NET实现
- Comparator列表排序
- javascript跨浏览器兼容快捷复制
- 进程外Session
- POCO C++库学习和分析 -- 字符编码
- synchronized
- Alternatives to Lua as an embedded language
- 修改myeclipse 快捷键
- SimpleDateFormat的线程不安全性
- 内存分配的字节对齐