在java.util包中有一个Collections类,里面实现了对列表排序的功能,提供了一个静态方法sort方法,接收一个列表和一个Comparator接口的实例
实现的大致步骤如下:
1,先把列表转换为数组
2,通过Arrays的sort方法对数组排序,传入Comparator接口的实例
3,然后再把排好序的数组的数值设置到原来的列表对象中去
如果Comparator接口的compare方法返回一个小于0的数,表示被比较的两个对象中,前者小于后者
见下面的实例
要排序的对象:
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;
}
}
排序的测试端
package collectionsSort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
//直接使用Collections来排序
public class Client {
public static void main(String[] args) {
// 准备要测试的数据
UserModel um1 = new UserModel("u1","user1",21);
UserModel um2 = new UserModel("u2","user2",24);
UserModel um3 = new UserModel("u3","user3",25);
UserModel um4 = new UserModel("u4","user4",22);
//添加到列表中
List<UserModel> list = new ArrayList<UserModel>();
list.add(um1);
list.add(um2);
list.add(um3);
list.add(um4);
System.out.println("排序前-------------");
printList(list);
//实现比较器,也可以单独用一个类来实现
Comparator c = new Comparator(){
@Override
public int compare(Object arg0, Object arg1) { //这里实现按照用户年龄大小来排序
UserModel temp1 = (UserModel) arg0;
UserModel temp2 = (UserModel) arg1;
if(temp1.getAge()>temp2.getAge())return 1;
else if(temp1.getAge()<temp2.getAge())return -1;
else if(temp1.getAge()==temp2.getAge())return 0;
return 0;
}
};
//排序,主要就是依靠Comparator接口的具体实现
Collections.sort(list,c);
System.out.println("排序后-------------");
printList(list);
}
private static void printList(List<UserModel> list) {
for(UserModel um:list){
System.out.println(um);
}
}
}