gpt4 book ai didi

Java对bean集合进行排序的有效方法

转载 作者:行者123 更新时间:2023-11-29 08:04:23 25 4
gpt4 key购买 nike

作为查询的结果,我有一个来自数据库的 bean 列表。

bean如下:

    public class Employee implements Comparator<Employee> {

protected String empId; //alphanumeric e.g.abc123
protected String empFullName;
protected String empAddress;
protected String dept;
protected String project;

public String getEmpId() {
return empId;
}
public void setEmpId(String empId) {
this.empId = empId;
}
public String getEmpFullName() {
return empFullName;
}
public void setEmpFullName(String empFullName) {
this.empFullName = empFullName;
}
public String getEmpAddress() {
return empAddress;
}
public void setEmpAddress(String empAddress) {
this.empAddress = empAddress;
}
public String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getProject() {
return project;
}
public void setProject(String project) {
this.project = project;
}

@Override
public int compare(Employee e1, Employee e2) {
if (e1 == null && e2 == null) return 0;

if (e1 != null && e2 == null) return -1;
if (e1 == null && e2 != null) return 1;

return e1.empId.compareTo (e2.empId);
}



}

我有比较器,它按字母数字的 empId 排序。

我想知道按 empId、dept、project 排序的最佳方法是什么。

在代码中,如果我这样做,它会按 empId 排序。

    List<Employee> empList = someDao.getEmpList();
Collections.sort(empList, new Employee());

任何建议。

最佳答案

这本身就是一个奇怪的声明:

public class Employee implements Comparator<Employee>

更常见的是:

public class Employee implements Comparable<Employee>

然后也许:

public class EmployeeByIdComparator implements Comparator<Employee>

public class EmployeeByNameComparator implements Comparator<Employee>

等等

实现Comparable 的类的实例知道如何将自身 与另一个实例进行比较;通常这是为“自然”排序保留的。将它与 Comparator 的实例进行比较,它知道如何比较两个实例,通常是不同类型(指定为比较器).

因此,如果您想要多种类型的比较,请创建多个比较器。然后您可能想将它们链接在一起 - Guava提供了一种简单的方法来做到这一点。 (参见 ComparisonChain。)为方便起见,您可能希望将比较器实现为 Employee 中的私有(private)静态类,然后通过公共(public)静态最终字段公开它们的单个实例:

public class Employee
{
public static final Comparator<Employee> BY_ID_COMPARATOR
= new ByIdComparator();

private static final class ByIdComparator : Comparator<Employee>
{
...
}
}

关于Java对bean集合进行排序的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12321924/

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