gpt4 book ai didi

java - 使用数字和范围对字符串列表进行排序

转载 作者:行者123 更新时间:2023-12-02 08:56:45 25 4
gpt4 key购买 nike

输入列表: “3 年”、“5 - 7 年”、“3 - 6 年”、“3 - 8 年”、“3 - 5 年”、“5年”预期产出列表: “3年”、“3 - 5年”、“3 - 6年”、“3 - 8年”、“5年”、“5 - 7年” “

我想对字符串列表进行排序,如上所示,我尝试在数组列表中使用 Collection.sort 但没有得到预期的输出。我的输出如下所示。带连字符的字符串显示在不带连字符的字符串之前。但它正在排序。

我的输出排序列表: “3 - 5 年”、“3 - 6 年”、“3 - 8 年”、“3 年”、“5 - 7 年” ,“5年”,

最佳答案

您的列表包含字符串,因此 Collections.sort() 已根据字符串比较对列表进行排序。
如果您希望它以不同的方式排序,则必须使用合适的比较器,请尝试以下代码:

ArrayList<String> list = new ArrayList<>();
list.add("3 years");
list.add("5 - 7 years");
list.add("3 - 6 years");
list.add("3 - 8 years");
list.add("3 - 5 years");
list.add("5 years");

// sort the list
Collections.sort(list, new Comparator<String>() {

@Override
public int compare(String o1, String o2) {
// remove all the non - digits from the string
String n1 = o1.replaceAll("\\D", "");
String n2 = o2.replaceAll("\\D", "");
return n1.compareTo(n2);
}
});

System.out.println(list);
// output is
// [3 years, 3 - 5 years, 3 - 6 years, 3 - 8 years, 5 years, 5 - 7 years]

关于java - 使用数字和范围对字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60447109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com