有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java排序字符串对象

我只是想看看是否有一种简单的方法来排序字符串对象列表。我现在面临的问题是收藏。排序(…)这种方法对我不起作用

这是我的原始列表,出于我的需求,它被排序为:

    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");

在收集之后。排序(值),顺序现在被打破:

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

这种行为是因为集合中使用的词典顺序。排序(…)?有没有一种更简单的方法可以让这类工作按照我的要求进行

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    您需要使用自定义比较器来提取字符串的数字部分,将其转换为整数实例,并比较这些整数:

    public class SectionComparator implements Comparator<String>() {
        @Override
        public int compare(String s1, String s2) {
            Integer i1 = Integer.valueOf(s1.substring(s1.indexOf('_') + 1));
            Integer i2 = Integer.valueOf(s1.substring(s2.indexOf('_') + 1));
            return i1.compareTo(i2),
        }
    }
    

    但是,您也可以使用Section对象,而不是使用字符串来表示部分,该对象将具有一个number属性、一个toString()方法,以及使用number属性的自然排序