gpt4 book ai didi

java - CompareTo 中的变量顺序会有所不同吗?

转载 作者:行者123 更新时间:2023-12-02 03:06:25 28 4
gpt4 key购买 nike

给定一个非负整数列表,我想对它们进行排列,使它们形成最大的数字。给定 [1, 20, 23, 4, 8],最大的形成数字是 8423201。但我想弄清楚compareTo 方法中变量的顺序如何影响 Arrays.sort 的结果。例如,(s2 + s1).compareTo(s1 + s2) 和 (s1 + s2).compareTo(s2 + s1) 之间有什么区别。

enter code here

private static class NumbersComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2){
return (s2 + s1).compareTo(s1 + s2);
}
}
String strs = {"1", "20", "23", "4", "8"};
Arrays.sort(strs, new NumbersComparator());

最佳答案

对数字进行反向排序(降序)lexicographical order ,即数字按照默认的String排序相反顺序。就像,

String[] strs = { "1", "20", "23", "4", "8" };
Stream.of(strs).sorted(Comparator.reverseOrder()) // <-- sort in reverse order
.forEachOrdered(System.out::print);
System.out.println();

哪些输出

8423201

因为 8 大于所有其他数字的第一位数字,所以 4 是下一个数字,依此类推。

关于java - CompareTo 中的变量顺序会有所不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41668251/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com