为了对数组进行排序,我们不能使用整数(或
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));
}
}
输出:
Before sorting:
[545434548549387551787458475822, 7485204875485114857489579847438573954738574359287485284574, 555434548549387551787458475822]
After sorting:
[545434548549387551787458475822, 555434548549387551787458475822, 7485204875485114857489579847438573954738574359287485284574]
如果您无法将其转换为标准
Number
实例(在 Java 中),则使用词法排序而不是数字排序。
99
,则将其设为 0000000099
。如果您的数组包含小数,在排序之前,您必须将上述算法扩展为:
"1.260"
和 "1.26"
。如果我们确定所有数字彼此不同,那么我们就不需要这个。)