解决List排序时对象属性为字符串加数字时排序

参考例子:

@Data
public class Student {
    private String name;
    private Integer age;

    public static void main(String[] args) {
        Student w1 = new Student();
        w1.setName("w1");
        w1.setAge(18);

        Student w10 = new Student();
        w10.setName("w10");
        w10.setAge(18);

        Student w2 = new Student();
        w2.setName("w2");
        w2.setAge(18);

        List<Student> test = Stream.of(w1, w10, w2)
                .sorted(Comparator.comparing((Student student) -> extractNumber(student.getName()))).toList();
        // 打印学生信息
        test.forEach(System.out::println);
    }

    private static int extractNumber(String title) {
        StringBuilder numberBuilder = new StringBuilder();
        for (char c : title.toCharArray()) {
            if (Character.isDigit(c)) {
                numberBuilder.append(c);
            }
        }
        return !numberBuilder.isEmpty() ? Integer.parseInt(numberBuilder.toString()) : 0;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值