要对数组进行排序,我们不能使用整数(或Long)解析,因为大小非常大.

例如

String[] arr = new String[] {
        "545434548549387551787458475822", 
        "555434548549387551787458475822",
        "7485204875485114857489579847438573954738574359287485284574"
    };

我们在弦上只有不可分割的部分.

推荐答案

您可以使用Java的BigInteger类和一个定制的比较器对数组进行排序:

import java.util.Arrays;
import java.math.BigInteger;
import java.util.Comparator;

public class Main {
    public static void main(String[] args) {
        String[] arr = {
            "545434548549387551787458475822",
            "7485204875485114857489579847438573954738574359287485284574",
            "555434548549387551787458475822"
        };
        System.out.println("Before sorting:\n" + Arrays.toString(arr));
        Arrays.sort(arr, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return new BigInteger(o1).compareTo(new BigInteger(o2));
            }
        });
        // Alternative lambda custom comparator: 
        // Arrays.sort(arr, (o1, o2) -> new BigInteger(o1).compareTo(new BigInteger(o2)));
        System.out.println("After sorting:\n" + Arrays.toString(arr));
    }
}

Output:

Before sorting:
[545434548549387551787458475822, 7485204875485114857489579847438573954738574359287485284574, 555434548549387551787458475822]
After sorting:
[545434548549387551787458475822, 555434548549387551787458475822, 7485204875485114857489579847438573954738574359287485284574]

Java相关问答推荐

如何在Spring Boot中创建500错误的响应正文?

使用Apache Poi MQLSlideShow,在XSLFTable表中,我们可以在文本段落后面的每个单元格中包含圆角矩形吗?

在Java 8之后,HashMap的最坏情况下时间复杂度仍然是O(n)而不是O(log n)?

OpenJDK、4K显示和文本质量

@从类文件中删除JsonProperty—Java

弹簧靴和龙目岛

为什么Java的代码工作(if condition内部的实例)

Spring Boot Maven包

Spring Data JPA慢慢地创建了太多非活动会话

如何从日志(log)行中删除包名称?

%This内置函数示例

在Eclipse中调试未导出的JDK模块的Java包

Java在操作多个属性和锁定锁对象时使用同步和易失性

将双倍转换为百分比

如何在字节数组中反转UTF-8编码?

如何使用Rascal Evaluator从编译的JAR访问Rascal函数?

验证没有';t work on Hibernate Entity';s字段

如何在MPAndroidChart中的条形图上正确添加标签

JavaFX中ListView中的问题

人们在 IntelliJ 上将-Dhttp.proxyHost=your.proxy.net -Dhttp.proxyPort=8080放在哪里?