以前一直不怎么用排序,一般都是在数据库中直接对返回值做排序,最近业务上突然要求对取到后的数据做排序,因为涉及跨库操作,所以没办法直接在数据库排序,原本以为得写个循环来做,查找api后突然发现有更加简便快捷的方法,特此记录下,方便以后查询,如果有人有更好的方法的话,请留言。
测试代码:
实体类
public class User {
private Integer id;
private String name;
private String pwd;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public User(Integer id, String name, String pwd) {
super();
this.id = id;
this.name = name;
this.pwd = pwd;
}
public User() {
super();
}
}
//具体的比较类,实现Comparator接口
import java.util.Comparator;
import com.entyty.User;
public class Study_list implements Comparator{
@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
User user0 = (User) o1;
User user1 = (User) o2;
int flag = user0.getId().compareTo(user1.getId());//基于主键id的排序
if(flag==0){
return user0.getName().compareTo(user1.getName());//当主键id都相等或不需要排序事,根据名称进行排序
}else{
return flag;
}
}
}
//测试类
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.entyty.User;
public class ces {
public static void main(String[] args) {
List<User> list = new ArrayList<User>();
User user1 = new User(1, "张三", "123");
User user2 = new User(2, "李四", "234");
User user3 = new User(3, "王五", "345");
User user4 = new User(3, "赵六", "456");
User user5 = new User(3, "孙七", "567");
User user6 = new User(6, "钱八", "678");
User user7 = new User(7, "周九", "789");
list.add(user1);
list.add(user6);
list.add(user3);
list.add(user7);
list.add(user5);
list.add(user2);
list.add(user4);
//对集合进排序,调用比较类
Study_list comparator = new Study_list();
Collections.sort(list, comparator);
//将结果输出
for (int i=0;i<list.size();i++){
User user_temp=(User)list.get(i);
System.out.println(user_temp.getId()+","+user_temp.getName());
}
}
}
具体的结果:
1,张三
2,李四
3,孙七
3,王五 //id都为3时,按照名字进行了排序(s,w,z)
3,赵六
6,钱八
7,周九