当前位置: 首页 > 面试题库 >

我怎样才能对ArrayList进行排序?

夏侯瑞
2023-03-14
问题内容

这是一个简单的ArrayList排序程序:

ArrayList<String> list = new ArrayList<String>();

list.add("1_Update");
list.add("11_Add");
list.add("12_Delete");
list.add("2_Create");

Collections.sort(list);
for (String str : list) {
  System.out.println(str.toString());
}

我期望该程序的输出为:

1_Update
2_Create
11_Add
12_Delete

但是当我运行该程序时,我得到的输出为:

11_Add
12_Delete
1_Update
2_Create

为什么会这样?如何使ArrayList进行排序,如预期输出所示?


问题答案:

您可以编写一个自定义比较器:

Collections.sort(list, new Comparator<String>() {
    public int compare(String a, String b) {
        return Integer.signum(fixString(a) - fixString(b));
    }
    private int fixString(String in) {
        return Integer.parseInt(in.substring(0, in.indexOf('_')));
    }
});


 类似资料:
  • 我正在阅读Kafka的文档,注意到下面一行: 但是,请注意,使用者组中的使用者实例不能多于分区。 嗯。如何自动缩放? 这是Kafka的限制但是...如果我理解这是如何工作的,那么两个用户组都将从一个分区(例如msg.hi)中提取,并使用它们自己的偏移量,因此两个用户组都不知道另一个分区--这意味着消息可能会被传递两次! 我怎样才能达到我在兔子设计中所拥有的Kafka的能力,并且仍然保持行为的“队列

  • 有什么方法可以简化这段代码吗?我正好有一个白色的一块,想要得到它的位置 代码: 瓦片类: 件类:

  • 所以简而言之,我想做的是让一个带有发光二极管和图形用户界面的arduino显示存储在一个不断更新的json文件中的信息(它来自一个叫做精英危险的游戏)。 所以我使用看门狗来查看文件何时更新,然后读取新信息。然后我想使用tkinter来显示信息,例如:盒子改变颜色 但是问题是,当我使用tkinter时,mainloop()会停止其余代码的运行(我假设这是因为它是一个无限循环)。我对编程还是很陌生的,

  • 场景z:Zaloguj u cinytkownika który zna swój login i have lo 我导入了所有注释: 导入cucumber.api.java.pl.Jez Eli; 导入cucumber.api.java.pl.oraz; 导入cucumber.api.java.pl.wtedy; 导入cucumber.api.java.pl.zakladaja c; 我的pom

  • 问题内容: 我试图“ stopPropagation”以防止单击li内的元素(链接)时关闭TwitterBootstrap导航栏下拉菜单。 在Angular中,看起来像指令是执行此操作的地方?所以我有: …但是该方法不属于元素: 我把指令与 有什么建议么? 问题答案: “当前一些指令(即ng:click)停止事件传播。这阻止了与依赖于捕获此类事件的其他框架的互操作性。” - …并且能够在没有指令的

  • 所以我试图将重力添加到4个UIButton,但它们没有下降,我将此代码添加到视图中并加载,我不知道为什么这不起作用。这是代码: 我的按钮有红色按钮、绿色按钮、蓝色按钮和相机按钮,我也应用了秋天的方向,但当我运行应用程序时,它们只是静态的。那么,有没有可能给这些按钮增加重力呢?