【发布时间】:2019-07-01 10:48:34
【问题描述】:
我正在尝试对具有包含整数和字母的字符串的列表数组进行排序,但是当我以常规方式进行排序时,我会得到一些奇怪的输出: 相关代码:
List<String> words = new ArrayList<>();
words.add("9 hello");
words.add("98 food");
words.add("105 cat");
words.add("2514 human");
words.add("3 pencil");
words.sort(Comparator.reverseOrder());
我期待:
"2514 human"
"105 cat"
"98 food"
"9 hello"
"3 pencil"
但我得到的是这样的:
"98 food"
"9 hello"
"3 pencil"
"2514 human"
"105 cat"
有什么建议吗?
【问题讨论】:
-
你为什么会期待这样的结果?你要求一个颠倒的字母顺序,这似乎正是你得到的
-
为什么
2514 human应该在105 cat之前? -
您正在对文本进行字典序排序。你不是在解释这些数字。
9...高于2...无论之后发生什么。您需要将数字解释为实际数字而不是文本,以便按照您想要的方式对其进行排序。 -
我猜,你需要一个复合对象并且不是对单词而是对数值进行反向排序
-
您的值不是整数,而是作为字符串进行比较