java - 排序字符串对象

标签 java collections sorting

我只是想看看是否有一种简单的方法来对 String 对象列表进行排序。我现在面临的问题是 Collections.sort(...) 方法对我不起作用。

这是我的原始列表,根据我的要求进行了排序:

    List<String> values = new ArrayList<String>();


    values.add("section_1");
    values.add("section_2");
    values.add("section_3");
    values.add("section_4");
    values.add("section_5");
    values.add("section_6");
    values.add("section_7");
    values.add("section_8");
    values.add("section_9");
    values.add("section_10");
    values.add("section_11");
    values.add("section_12");
    values.add("section_13");

在执行 Collections.sort(values) 之后,顺序现在被打破了:

section_1
section_10
section_11 
section_12
section_13
section_2
section_3
section_4
section_5
section_6
section_7
section_8
section_9

这种行为是因为 Collections.sort(...) 中使用的字典顺序吗?有没有更简单的方法让这种排序按照我想要的方式工作?

提前致谢。

最佳答案

Is this behavior because of the lexicographical ordering used in Collections.sort(...) ?

当然。您已根据自然顺序对字符串进行排序。

Is there an easier way to make this sort work the way I want it to?

创建一个实现 Comparator<String> 的类表示您要使用的比较,并将其作为第二个参数传递给 Collections.sort .不过,您必须自己编写逻辑(或找到第三方库来这样做)。我认为标准库中没有任何东西可以做到这一点。 (您需要考虑区分大小写以及可能的各种其他因素。)

当然,如果您可以将数据 更改为section_01 , section_02等等,这意味着您可以只使用自然排序顺序...

关于java - 排序字符串对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10886934/

相关文章:

c# - 跨平台、稳定、功能强大的网络平台

java - 如何为“列表”首选项中的选项设置 onClick 监听器?

java - 如何对录音应用 FFT 以获得频率?

C# - 合并集合问题

java 8流从类型A的集合创建类型B的集合

java - 不使用 Gson、Jackson 等对 JSONArray 进行排序

c - 根据 C 中二维数组中列中的值重新排列行

java - 在ArrayList中找不到对象

ios - 在swift中按字母顺序对数组进行排序

c# - 如何使用 Entity Framework 将实体加载到私有(private)集合中