我正在阅读“Java 教程继续,JDK 的其余部分/Mary Campione”。 在集合章节中,我遇到了问题,但我无法理解它们,如下所示: 我们有一个名为 EmployeeRecord 的类:
**bold** public class EmployeeRecord implements Comparable {
public Name name();
public int employeeNumber();
public Date hireDate();
...
}
我们假设 EmployeeRecord 对象的自然顺序是名称顺序
import java.util.*;
class EmpSort {
static final Comparator SENIORITY_ORDER = new Comparator() {
public int compare(Object o1, Object o2) {
EmployeeRecord r1 = (EmployeeRecord) o1;
EmployeeRecord r2 = (EmployeeRecord) o2;
return r2.hireDate().compareTo(r1.hireDate());
}
};
static final Collection employees = ... ; // Employee Database
public static void main(String args[]) {
List emp = new ArrayList(employees);
Collections.sort(emp, SENIORITY_ORDER);
System.out.println(emp);
}
}
我对 EmployeeRecord 类有问题,我的意思是 EmployeeRecord 类的其余部分是什么,第二个问题是 Emplyee 数据库的其余部分应该是什么,我的意思是如何将 EmployeeRecord 添加到员工集合中? 我对 EmployeeRecord 类的其余部分和 Cillection 员工的其余部分有疑问。
我不确定我是否完全理解你的问题,但如果你使用
record
s,你至少使用Java 14,那么你为什么不使用泛型呢?
public class EmployeeRecord implements Comparable<EmployeeRecord> {
public Name name();
public int employeeNumber();
public Date hireDate();
...
}
导入java.util.*;
class EmpSort {
static final Comparator<EmployeeRecord> SENIORITY_ORDER
= (r1, r2) -> r2.hireDate().compareTo(r1.hireDate());
static final Collection<EmployeeRecord> employees = ... ; // Employee Database
public static void main(String args[]) {
List<EmployeeRecord> emp = employees.stream()
.sorted(SENIORITY_ORDER)
.collect(Collectors.toList());
System.out.println(emp);
}
}
它可以进一步简化,但这只是一个开始。