按字符串列表排序,先显示具有特定子字符串的字符串,然后显示其余字符串的排序顺序

问题描述 投票:-1回答:2

我有一个字符串列表(com.abc.c345,com.abc.a123,com.abc.d456,com.abc.b234,com.qwr.a1,com.wer.b2,com.ert.c3 )

我想对此进行排序,以便包含'com.abc'的字符串将首先以其排序样式显示,然后其余的字符串将以其排序样式显示。

所以输出应该看起来像这样

((com.abc.a123,com.abc.b234,com.abc.c345,com.abc.d456,com.ert.c3,com.qwr.a1,com.wer.b2)]

编辑1:我尝试将比较器用作:

    Collections.sort(list, new Comparator<LoggerDetails>() {
        @Override
        public int compare(LoggerDetails o1, LoggerDetails o2) {
            if(o1.logger.startsWith("com.abc") && !o1.logger.startsWith("com.abc")) {
                return -1;
            }
            if (o1.logger.startsWith("com.abc") && !o1.logger.startsWith("com.abc")) {
                return -1;
            }
            return 0;
        }  
    });
java comparator
2个回答
0
投票

通过删除从您的子字符串开始的每个条目来创建新列表,并将其添加到新列表。

之后,您可以使用list.addAll(0,newList)添加新列表的元素


-1
投票

您可以使用Java的util包中提供的Collections.sort简单地对列表进行排序。您期望的输出似乎是按字母和数字排序的格式,因此可以正常工作。这是对我有用的代码示例:

    List<String> list = new ArrayList<>();
    list.add("com.abc.c345");
    list.add("com.abc.a123");
    list.add("com.abc.d456");
    list.add("com.abc.b234");
    list.add("com.qwr.a1");
    list.add("com.wer.b2");
    list.add("com.ert.c3");

    Collections.sort(list);
    list.forEach(value -> System.out.println(value));

希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.