我已经知道我们可以对字符串数组进行数字排序,方法是将它们转换为整数数组,然后使用Arrays.sort()
或使用任何比较器。
所以我的问题是,如果这些字符串超出整数或long int的限制,那么我们如何对它们进行排序。例如,考虑以下字符串数组:
14829435897932384626433832795
4159265358979323846264338327
1937286535897932384626433832795296523
23746289
在这些情况下,传统的比较器或任何排序方法将无法工作,因为它们依次使用整数(或任何其他数据类型)。
最佳答案
您可以使用Arrays.sort(array, comparator)
Arrays.sort(array, Comparator.comparing(BigInteger::new));
comparator
可以将parameter
一个对象当作另一个对象(在这里为maps
a function)作为String into BigInteger
。详细信息(从短到长,Intellij会建议您使用第一个)::
= Comparator.comparing(BigInteger::new)
= Comparator.comparing(val -> new BigInteger(val))
= Comparator.comparing((o1, o2) -> new BigInteger(o1).compareTo(new BigInteger(o2)))
String[] array = new String[]{"14829435897932384626433832795",
"4159265358979323846264338327",
"1937286535897932384626433832795296523", "23746289"};
Arrays.sort(array, Comparator.comparing(BigInteger::new));
System.out.println(Arrays.toString(array));
//Will result in
[23746289, 4159265358979323846264338327, 14829435897932384626433832795, 1937286535897932384626433832795296523]
关于java - 对字符串数组进行数字排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47287556/