gpt4 book ai didi

java - 排序结果在 Java 中以 A, a, B, b... 的形式递增返回

转载 作者:行者123 更新时间:2023-11-29 04:07:44 26 4
gpt4 key购买 nike

我想根据名称属性对列表进行排序

并且排序应该像 A, a, B, b ... 在 java 中升序

如果有人在这方面帮助我,那就太好了。

例如

package corejava.compare;

import java.util.Comparator;

public class FirstNameSorter implements Comparator<Employee>{

@Override
public int compare(Employee o1, Employee o2) {
return o1.getFirstName().compareTo(o2.getFirstName());
}
}

我使用了这个比较器如下:

Employee e1 = new Employee(1, "aTestName", "dLastName", 34);
Employee e2 = new Employee(2, "A", "pLastName", 30);
Employee e3 = new Employee(3, "T", "sLastName", 31);
Employee e4 = new Employee(4, "D", "zLastName", 25);
Employee e5 = new Employee(5, "b", "zLastName", 25);

List<Employee> employees = new ArrayList<Employee>();
employees.add(e2);
employees.add(e3);
employees.add(e1);
employees.add(e4);
employees.add(e5);

Collections.sort(employees, new FirstNameSorter());

// Sorted by firstName
System.out.println(employees);

然后我得到以下输出:

A
D
T
b

但是,我想要以下输出:

A
b
D
T

最佳答案

就像评论中提到的@Zabuza 一样,您想要的顺序是几乎 不区分大小写的字母顺序,但不完全是,因为您希望在大写和小写字符相同时将它们组合在一起信。

您可以通过简单地添加小写字母并比较它们来完成此操作,如果小写检查显示匹配,则单独检查以恢复为纯字典顺序:

例如

public class FirstNameSorter implements Comparator<Employee> {
@Override
public int compare(Employee o1, Employee o2) {
int precheck = o1.getFirstName().toLowerCase().compareTo(o2.getFirstName().toLowerCase());
return precheck != 0 ? precheck : o1.getFirstName().compareTo(o2.getFirstName());
}
}

关于java - 排序结果在 Java 中以 A, a, B, b... 的形式递增返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57277475/

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