User自定义排序

需求:根据用户名称字典序排序

		List<User> us = new ArrayList<>();
		us.add(new User(3L, "", 13, "org3"));
		us.add(new User(2L, "abc2", 12, "org2"));
		us.add(new User(4L, "", 14, "org4"));
		us.add(new User(1L, "abc1", 11, "org1"));
        // 写法一
        us.sort((o1, o2) -> o2.getName().compareTo(o1.getName()));
		// 写法二
        Collections.sort(us, Comparator.comparing(User::getName).reversed());
		// 写法三 这是Java8版本以下写法,有Bug,有时会报错,有时排序结果不正确
        Collections.sort(us, new Comparator<User>() {
			@Override
			public int compare(User o1, User o2) {
                // 报错信息:Comparison method violates its general contract!)
				return o1.getName().compareTo(o2.getName());
				
			}
		});
		us.forEach(o -> System.out.println(o));

打印结果:

User [name=abc2, age=12, org=org2]
User [name=abc1, age=11, org=org1]
User [name=, age=13, org=org3]
User [name=, age=14, org=org4]

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值