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

失落的元素:

我想通过降低字符串长度来排序一个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"

雅各布·G:

你的输出是你期待什么,因为对面Math.abs(s1.length() - s2.length())的回报4两个|2 - 6||6 - 2|

的文档Collections#sort还指出以下内容:

这样的排序保证是稳定的:相等的元素不会由于排序而重新排序。

要解决您的问题,您可以删除Math#abs并交换比较(a的长度String不能为负,因此不会发生上溢/下溢):

Collections.sort(mutableList, (s1, s2) -> s2.length() - s1.length());

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按字符串长度降序对字符串列表进行排序,请勿更改列表

按降序对字符串列表进行排序(根据长度)

按降序对字符串列表进行自然排序

如何按长度降序对字符串列表的内容进行排序?

按字符串长度对字符串列表进行排序

按长度对字符串列表进行排序

按子字符串排序字符串列表

在VB中按整数降序对整数和字符串列表进行排序

按整数列表对字符串列表进行排序

按字符串的一部分对字符串列表进行排序

使用lambda函数按两个子字符串对字符串列表进行排序

Python:如何按子字符串相关性对字符串列表进行排序?

按字符对字符串列表进行排序

在Java中按字符对字符串列表进行排序

如何在python中按长度对二维字符串列表进行排序?

如何按字母顺序对字符串列表进行排序?

按多个参数对字符串列表进行排序

Dart:按频率对字符串列表进行排序

按数字部分的顺序对字符串列表进行排序

按索引对字符串列表进行排序

如何按多种条件对字符串列表进行排序

按出现频率对(嵌套的)字符串列表进行排序

按map值对字符串列表进行排序

如何按最高编号对字符串列表进行排序

在 Python 中按字符串中的数字对包含列表开头数字的字符串列表进行排序

按数字排序字符串列表

如何对字符串列表进行排序

如何对字符串列表进行排序?

字符串列表中的字符串长度python