Java对List<对象>属性进行排序

1、首先创建一个实体类User,大概属性如下:

@Getter
@Setter
public class User {

    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    private String name;

    private Integer age;
}

2、进行排序(正序):

        List<User> userList = new ArrayList<>();
        userList.add(new User("红", 35));
        userList.add(new User("橙", 19));
        userList.add(new User("黄", 25));
        userList.add(new User("绿", 30));
        userList.add(new User("青", 9));
        userList.add(new User("蓝", 19));
        
        userList.sort((v1, v2) -> v1.getAge().compareTo(v2.getAge()));
        
        userList.forEach(v -> {
            System.out.println("name:" + v.getName() + " age:" + v.getAge());
        });

打印结果:

name:青 age:9
name:橙 age:19
name:蓝 age:19
name:黄 age:25
name:绿 age:30
name:红 age:35

倒序就是将v1和v2换下位置:

        List<User> userList = new ArrayList<>();
        userList.add(new User("红", 35));
        userList.add(new User("橙", 19));
        userList.add(new User("黄", 25));
        userList.add(new User("绿", 30));
        userList.add(new User("青", 9));
        userList.add(new User("蓝", 19));
        
        userList.sort((v1, v2) -> v2.getAge().compareTo(v1.getAge()));
        
        userList.forEach(v -> {
            System.out.println("name:" + v.getName() + " age:" + v.getAge());
        });

打印结果:

name:红 age:35
name:绿 age:30
name:黄 age:25
name:橙 age:19
name:蓝 age:19
name:青 age:9

3、如果想截取前几名的数据:

    List<User> userList = new ArrayList<>();
        userList.add(new User("红", 35));
        userList.add(new User("橙", 19));
        userList.add(new User("黄", 25));
        userList.add(new User("绿", 30));
        userList.add(new User("青", 9));
        userList.add(new User("蓝", 19));
        userList.sort((v1, v2) -> v2.getAge().compareTo(v1.getAge()));

        List<User> users = userList.subList(0, 3);
        users.forEach(v -> {
            System.out.println("name:" + v.getName() + " age:" + v.getAge());
        });

打印结果:

name:红 age:35
name:绿 age:30
name:黄 age:25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值