关于集合中对象如何进行排序

  • 简单的排序, Arrays.sort(obj); 就可以搞定了,
  • 复杂点的排序,里面有对象,而且还是根据业务需要按对象的内容进行排序,这时就需要juc(java.util.C…)里面的内容了。
  • 这里举个简单的小栗子,来帮忙自己记忆

  • 首先是bean类
//实现Comparator接口,泛型对象就是需要进行排序的对象
public class SortingBean implements Comparator{

    private long time ;
    private String name ;


    public SortingBean() {}

    public SortingBean(long time, String name) {
        this.time = time;
        this.name = name;
    }

    public long getTime() {
        return time;
    }

    public void setTime(long time) {
        this.time = time;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    //这里就是需要进行排序的逻辑
    @Override
    public int compare(SortingBean o1, SortingBean o2) {
        //这里注意一下, 这是从小到大的顺序,如果改成 < 就是从大到小了!
        if (o1.getTime() > o2.getTime()){  
            return 1 ;
        }else if (o1.getTime() == o2.getTime()){
            return 0 ;
        }else {
            return -1;
        }
    }
}
  • 当然也可以把排序的逻辑单独写出来,比如这样
public class SortUtil implements Comparator<SortingBean> {
    @Override
    public int compare(SortingBean o1, SortingBean o2) {
        if (o1.getTime() > o2.getTime()){
            return 1 ;
        }else if (o1.getTime() == o2.getTime()){
            return 0 ;
        }else {
            return -1;
        }

    }
}
  • 然后就是如何使用
  public static void main(String[] args) {

        List  list = new ArrayList<>();
        list.add(new SortingBean(1258 , "name1"));
        list.add(new SortingBean(325 , "name2"));
        list.add(new SortingBean(4895 , "name3"));
        list.add(new SortingBean(128 , "name4"));
        list.add(new SortingBean(6 , "name5"));
        list.add(new SortingBean(15974 , "name6"));

        sop(list);
        //这是list集合自带的方法
        //list.sort(new SortingBean());
        Collections.sort(list , new SortingBean());

        //用SortUtil 也可以的,你可以写2个,但是里面的排序方式 可以不一样随便搞
        //list.sort(new SortUtil());
        //Collections.sort(list , new SortUtil());
        sop(list);
    }
//Collections中的方法,也有作用于map,set的集合方法,这里自己暂时还没有接触到,大家可以试下,当然简单的方法是直接将map转换成list,然后进行排序!

//输出结果:
//1258   325   4895   128   6   15974   
//6   128   325   1258   4895   15974   



    public static void sop(List list) {
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i).getTime() + "   ");
        }
        System.out.println();
    }

你可能感兴趣的:(排序)