java - Collections.sort 有什么问题?

标签 java arrays sorting collections arraylist

我将这些字符串放在一个 String 的 ArrayList 中,没有特定的顺序,但是当我调用 Collections.sort(listReference) 时,排序结果不正确,为什么 10 和 11(最后 2 个字符)出现在 07、08 之前, 09?

12880  20090506054200001
12880  20090506054200002
12880  20090513070200003
12880  20090513070200004
12880  20090520202600005
12880  20090520202600006
12880  20090520232900010
12880  20090520232900011
12880  20090520232900007
12880  20090520232900008
12880  20090520232900009

最佳答案

它对我来说很好用:

import java.util.*;

public class Test {

      public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("12880  20090506054200001");
        list.add("12880  20090506054200002");
        list.add("12880  20090513070200003");
        list.add("12880  20090513070200004");
        list.add("12880  20090520202600005");
        list.add("12880  20090520202600006");
        list.add("12880  20090520232900010");
        list.add("12880  20090520232900011");
        list.add("12880  20090520232900007");
        list.add("12880  20090520232900008");
        list.add("12880  20090520232900009");

        Collections.sort(list);

        for (String x : list) {
          System.out.println(x);
        }
      }
    }

输出:

12880  20090506054200001
12880  20090506054200002
12880  20090513070200003
12880  20090513070200004
12880  20090520202600005
12880  20090520202600006
12880  20090520232900007
12880  20090520232900008
12880  20090520232900009
12880  20090520232900010
12880  20090520232900011

您是否绝对确定您的 7/8/9 条目在其他地方没有“奇怪”的东西(例如,12880 和时间戳之间的不同空白元素)?

如果没有,您能否制作一个简短但完整的程序来演示问题?

关于java - Collections.sort 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/955710/

相关文章:

c - 指针和排序

linux - Linux 中的稳定排序

Java REGEX .replaceall() 不适用于特定 JSON 对象(转换为字符串)

java - 即使脚本在数据库客户端 (MySQL) 中运行正常,Flyway 迁移也会失败

Java:是否可以在for循环内换行x次?

arrays - 如何在 Swift 中用另一个数组中的元素替换数组?

java - Ebean ManyToMany 与桥表查找所有查询

Java 8 Lambda Sort With Variable 方法引用

javascript - EXTJS 5 在商店中加载一个非常简单的字符串数组

c++ - 在没有额外空间的情况下合并 2 个大小相同的已排序数组?