我有一个字符串列表(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;
}
});
通过删除从您的子字符串开始的每个条目来创建新列表,并将其添加到新列表。
之后,您可以使用list.addAll(0,newList)添加新列表的元素
您可以使用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));
希望有帮助!