对带有中文+数字的List进行自然排序

当需要对包含中文和数字的List进行排序时,标准排序可能导致不准确的结果。本文提供了一种自然排序算法,能正确处理这种混合内容的排序问题。通过调用naturalSort方法并传入相应参数,可以实现对list中实体的自然排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在排序的时候如果根据中文排序,在排序的list如果是涉及到数字的排序就不是很准确,例如会出现下面这样的情况

这里写的一个自然排序算法,可以将list进行转换,如果需要排序的是list的实体,修改方法naturalSort中的排序的两个参数就行

package cn.javabb.common;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

//包装器类
public class OrderWrapper{
    public static int atoi(String str) {
        //这里要小心,需要判断有效性
        if (str == null || str.length() == 0) {
            return 0;
        }
        int nlen = str.length();
        double sum = 0;
        int sign = 1;
        int j = 0;
        //剔除空格
        while (str.charAt(j) == ' ') {
            j++;
        }
        //判断正数和负数
        if (str.charAt(j) == '+') {
            sign = 1;
            j++;
        } else if (str.charAt(j) == '-') {
            sign = -1;
            j++;
        }

        for (int i = j; i &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值