学习Collections对list做排序

来源:互联网 发布:jbl煲音箱软件 编辑:程序博客网 时间:2024/05/22 03:38

        以前一直不怎么用排序,一般都是在数据库中直接对返回值做排序,最近业务上突然要求对取到后的数据做排序,因为涉及跨库操作,所以没办法直接在数据库排序,原本以为得写个循环来做,查找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,周九

0 0