compareTo 中的变量顺序会有所不同吗?
Will the variables order in compareTo make difference?
给定一个非负整数列表,我想将它们排列成最大的数。给定 [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,即默认[=22]中数字按String
(s)排序=]倒序。喜欢,
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
是下一个,依此类推。
是的。 compareTo 方法中的顺序会有所不同。当您对字符串使用 compareTo 方法时,它会比较字符串中每个字符的 Unicode 值和 return 字符串中两个字符值的差异。
例如,
System.out.println("abdc".compareTo("abcd"));
将return与'd'-'c'
的区别
Output : 1
并且
System.out.println("abcd".compareTo("abdc"));
将给出 'c'-'d'
的差异
Output : -1
总的来说,顺序很重要,因为它 return 在某种程度上存在差异,即:
thisString.charAt(index) - argumentString.charAt(index);
给定一个非负整数列表,我想将它们排列成最大的数。给定 [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,即默认[=22]中数字按String
(s)排序=]倒序。喜欢,
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
是下一个,依此类推。
是的。 compareTo 方法中的顺序会有所不同。当您对字符串使用 compareTo 方法时,它会比较字符串中每个字符的 Unicode 值和 return 字符串中两个字符值的差异。 例如,
System.out.println("abdc".compareTo("abcd"));
将return与'd'-'c'
的区别Output : 1
并且
System.out.println("abcd".compareTo("abdc"));
将给出 'c'-'d'
的差异Output : -1
总的来说,顺序很重要,因为它 return 在某种程度上存在差异,即:
thisString.charAt(index) - argumentString.charAt(index);