gpt4 book ai didi

java - Arraylist 忽略数字按字母顺序排序

转载 作者:行者123 更新时间:2023-12-01 22:03:41 24 4
gpt4 key购买 nike

所以我得到了一个简单的数组列表,我想按字母顺序排序,这部分我记下来了。没问题,问题是,名单上的名字前面有一个身份证号码。我需要根据字母表对其进行排序。感谢任何帮助,请参阅下文。

    student.add("01, Pentecoast");
student.add("02, Walker");
student.add("03, Smith");
student.add("04, Gonzalez");
student.add("05, Kylekorn");
student.add("06, Queen");
student.add("07, Divan");
student.add("08, Homero");
student.add("09, Flanders");
student.add("10, Simpsons");

我的排序方式是:

    Collections.sort(students, String.CASE_INSENSITIVE_ORDER);

但他们的数字正在增长。

最佳答案

我认为您需要一个自定义的Comparator,但让我们定义并初始化您的List。比如,

List<String> student = new ArrayList<>();
student.add("01, Pentecoast");
student.add("02, Walker");
student.add("03, Smith");
student.add("04, Gonzalez");
student.add("05, Kylekorn");
student.add("06, Queen");
student.add("07, Divan");
student.add("08, Homero");
student.add("09, Flanders");
student.add("10, Simpsons");

然后处理null,并split。比较数字后的文本。比如,

Collections.sort(student, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if (o1 == null) {
return o2 == null ? 0 : -1;
} else if (o2 == null) {
return 1;
}
String[] o1Arr = o1.split(", ");
String[] o2Arr = o2.split(", ");
return o1Arr[1].compareTo(o2Arr[1]);
}
});
System.out.println(student);

输出按名称排序(我得到,针对本文进行格式化)

[07, Divan, 09, Flanders, 04, Gonzalez, 08, Homero, 
05, Kylekorn, 01, Pentecoast, 06, Queen, 10, Simpsons,
03, Smith, 02, Walker]

关于java - Arraylist 忽略数字按字母顺序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205499/

24 4 0