【发布时间】:2020-05-22 07:18:10
【问题描述】:
我正在尝试对这个 ArrayList 进行排序:
["1","1.1","1.2","1.3","2.1","2.3","4","4.1","6","7.1","8","8.1","10.1","2.4.7","2.2","2.4.8","3","2.4.2","2.4.9","2.4.5","5","5.1","7","2.4.4","2.4.6","2.4.1","2","2.4","3.1","6.1","9","9.1","10","11","11.1","12","12.1","13","2.4.3"]
我使用了Collections.sort(),但它只适用于小于 10 的小数,因为当一个项目有超过 10 个小数时,按数字排序而不是按列表顺序排序。例如从 1.1 到 1.14 的列表,结果是这样的:
1.1, 1.10, 1.11, 1.12, 1.13, 1.14, 1.2, 1.3, ... 1.8, 1.9
但应该是这样的:
1.1, 1.2, 1.3, ... 1.9, 1.10, 1.11, 1.12, 1.13, 1.14
而且只有一位小数。
最后它应该有的结果是:
["1","1.1","1.2","1.3","2","2.1","2.2","2.3","2.4","2.4.1","2.4.2","2.4.3","2.4.4","2.4.5","2.4.6","2.4.7","2.4.8","2.4.9","3","3.1","4","4.1","5","5.1","6","6.1","7","7.1","8","8.1","9","9.1 ","10","10.1","11","11.1","12","12.1","13"]
我接受任何建议。
谢谢
【问题讨论】:
-
尝试进行自定义排序。
-
您的数字是字符串,因此您是按字母顺序而不是数字顺序对它们进行排序。另外,
"2.4.5"之类的东西是什么? -
也许最好用 3 个元素制作每个字符串的元组/数组。并且主要按第一个元素排序,然后是第二个,然后是第三个。