List排序的方法。

@Data
@AllArgsConstructor
public class User implements Serializable {
    private static final long serialVersionUID = -1078433404507796595L;
    private Integer id ;
    private String userName ;
    private String password ;
}
Collections.sort,Java 8 Lambda 表达式 ,Comparator重写compare方法
public class TestArrayList {
    public static void main(String[] args) {

        List<User> userList = new ArrayList<User>();
        buildData(userList);
        for(User u : userList){
            System.out.println(u.toString());
        }

        System.out.println("<-----------*****************------------>");
        userList.sort(new Comparator<User>(){
            @Override
            public int compare(User arg0, User arg1) {
                //这里是根据ID来排序,所以它为空的要剔除掉
                if(arg0.getId()==null || arg1.getId()==null) return 0;
                return arg0.getId().compareTo(arg1.getId());//这是顺序
            }
        });
        for(User u : userList){
            System.out.println(u.toString());
        }
        List<Integer> Integerlist = new ArrayList<>();
        Integerlist.add(3);
        Integerlist.add(5);
        Integerlist.add(1);
        Collections.reverse(Integerlist);
        System.out.println("倒序:"+Integerlist);
        Collections.sort(Integerlist);
        System.out.println("升序:"+Integerlist);

        //java8新特性
        Integerlist.add(3);
        Integerlist.add(5);
        Integerlist.add(1);
        Integerlist.sort(Integer::compareTo);
        System.out.println("java8新特性:"+Integerlist);

        Collections.sort(userList, (User h1, User h2) -> h1.getId() - h2.getId());
        System.out.println("aaaaaaaaa:"+userList);

        userList.stream().sorted(Comparator.comparing(User::getId)).collect(Collectors.toList()).forEach(System.out::println);

        System.out.println("<-----------以下:id降序,Password升序------------>");
        userList.stream().sorted(Comparator.comparing(User::getId).reversed()
                .thenComparing(Comparator.comparing(User::getPassword)))
                .collect(Collectors.toList()).forEach(System.out::println);

    }
    public static void buildData(List<User> userList){
        if(userList == null){
            userList = new ArrayList<User>();
        }
        User u1 = new User((Integer)1, "kobe1" ,"123456");
        User u2 = new User((Integer)2, "kobe2" , "123456");
        User u3 = new User((Integer)3, "kobe3" ,"123456");
        User u31 = new User((Integer)3, "kobe31" , "1");
        User u32 = new User((Integer)3, "kobe32" , "2");
        User u33 = new User((Integer)3, "kobe33" ,"3");
        User u4 = new User((Integer)4, "kobe4" ,"654321");
        User u5 = new User((Integer)5, "kobe5" , "666666");
        User u6 = new User((Integer)6, "kobe6" ,"888888");
        userList.add(u5);
        userList.add(u33);
        userList.add(u3);
        userList.add(u31);
        userList.add(u32);
        userList.add(u2);
        userList.add(u1);
        userList.add(u4);
        userList.add(u6);
    }



}
 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值