gpt4 book ai didi

java - 按字符串长度降序对字符串列表进行排序,不会更改列表

转载 作者:行者123 更新时间:2023-12-04 09:43:21 28 4
gpt4 key购买 nike

我想通过降序字符串长度对 immutableList 的副本进行排序。我必须支持低于 java 8 的 API。

我尝试了这个基本代码,但它仍然是相反的顺序

ImmutableList<String> possibleTexts = ImmutableList.of("aa", "bbbbbb");
final List<String> mutableList = new ArrayList<>(possibleTexts);
Collections.sort(mutableList, (s1, s2) -> Math.abs(s1.length() - s2.length()));

而 mutableList 是 "aa", "bbbbbb"而不是 "bbbbbb","aa"

最佳答案

您的输出与您期望的相反,因为 Math.abs(s1.length() - s2.length())返回 4两者都适用 |2 - 6||6 - 2| .

Collections#sort 的文档还声明如下:

This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.



要解决您的问题,您可以删除 Math#abs 并交换您的比较( String 的长度不能为负,因此不会发生上溢/下溢):
Collections.sort(mutableList, (s1, s2) -> s2.length() - s1.length());

但是,我建议使用 List#sort Comparator#comparingInt Comparator#reversed ,因为它比您当前的代码段更具可读性。

关于java - 按字符串长度降序对字符串列表进行排序,不会更改列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62233723/

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