s1.length()-s2.length()); System.out.-6ren">
gpt4 book ai didi

java - 按字符串长度排序

转载 作者:行者123 更新时间:2023-12-01 23:01:15 25 4
gpt4 key购买 nike

 String[] arrays = {"AA", "B"};
Arrays.sort(arrays, (s1, s2)->s1.length()-s2.length());
System.out.println(Arrays.toString(arrays));

这是我对jdk 8环境的测试。当 s1.length() 大于 s2.length() 时,比较器返回负数,因此 s1 在 s2 之前。但结果是[“B”,“AA”]。怎么了?

当 s1.length() 大于 s2.length() 时,比较器返回一个数,因此 s2 在 s1 之前。所以结果是[“B”,“AA”]。我只是犯了一个愚蠢的错误。

最佳答案

o1 - object1 in your case s1
o2 - object2 in your case s2

比较方法以这种方式工作并返回

-1 : o1 < o2
0 : o1 == o2
+1 : o1 > o2

在你的情况下s1 < s2所以它返回 -1,因此它按先小后大的升序排序。

public int compare(String s1, String s2) {
System.out.println(s1);
System.out.println(s2);
return s1.length() - s2.length();
}

o/p

B
AA
[B, AA]

在下面的情况下,如果我们反转返回参数,如下所示

public int compare(String s1, String s2) {
System.out.println(s1);
System.out.println(s2);
return s2.length() - s1.length();
}

它返回正数,因此按降序排序,先大后小。

o/p 是

B
AA
[AA, B]

现在只返回 0

public int compare(String s1, String s2) {
System.out.println(s1);
System.out.println(s2);
return s2.length() - s2.length();
}

o/p - 没有发生排序,因为它假设所有即将到来的对象都是相等的。

B
AA
[AA, B]

如有任何问题请告诉我。

关于java - 按字符串长度排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23355042/

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