将对象(元素)添加到 Java 集合

问题描述 投票:0回答:1

我正在阅读“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 员工的其余部分有疑问。

java collections record-classes
1个回答
0
投票

我不确定我是否完全理解你的问题,但如果你使用

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);
    }
}

它可以进一步简化,但这只是一个开始。

© www.soinside.com 2019 - 2024. All rights reserved.