实体类public class Pager<T> implements Serializable {
    /**
     * 起始页码
     */
    private int page;
    /**
     * 分页大小
     */
    private int pageSize;
测试类public static void main(String[] args) {
        List<Pager> r = new ArrayList<>();
        Pager a = new Pager();
        a.setPage(1);
        a.setPageSize(10);
        Pager b = new Pager();
        b.setPage(3);
        b.setPageSize(8);
        Pager c = new Pager();
        c.setPage(2);
        c.setPageSize(9);
        Pager  d= new Pager();
        d.setPage(4);
        d.setPageSize(11);        r.add(a);
        r.add(b);
        r.add(c);
        r.add(d);
        Collections.sort(r, new Comparator<Pager>() {
            @Override
            public int compare(Pager o1, Pager o2) {
                if (o1.getPage() < o2.getPage()){
                    return -1;
                }
                if (o1.getPageSize() < o2.getPageSize()){
                    return -1;
                }
                return 0;
            }
        });        System.out.println(r);
    }
打印结果: [Pager{page=2, pageSize=9}, Pager{page=3, pageSize=8}, Pager{page=1, pageSize=10}, Pager{page=4, pageSize=11}]为什么没有先按照page,再按照PageSize排序呢?

解决方案 »

  1.   

    你的比较有问题啊,需要提供 1,-1和0;3个比较值,你只有-1,0可能不行。pagesize只有-1也不可能排序出来。
      

  2.   

    https://www.cnblogs.com/linjiqin/p/5756660.html  参考   包装类型 比较大小
      

  3.   

    page和pageSize应该是一个整体呀,对应页码和每页大小,对页码page排序就可以了。然后Collection里面的逻辑有问题,重写的coompare方法需要返回三种情况才能成功排序        Collections.sort(r, new Comparator<Pager>() {
                @Override
                public int compare(Pager o1, Pager o2) {
                    if (o1.getPage() < o2.getPage()){
                        return -1;
                    }else if (o1.getPage() > o2.getPage()){
                        return 1;
                    }else
                    return 0;
                }
            });
      

  4.   

    推荐楼主看下这个,对象排序
    https://blog.csdn.net/MusicIsMyAll/article/details/89710173
      

  5.   

    https://blog.csdn.net/MusicIsMyAll/article/details/89710173
      

  6.   

    if (o1.getPage() < o2.getPage()){
                        return -1;
                    }
                    if (o1.getPageSize() < o2.getPageSize()){
                        return -1;
                    }
    这两个if后边,都加上else return 1