将元素添加到集合中

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

我正在阅读“Java 教程继续,JDK 的其余部分/Mary Campione”。在收藏章节中我遇到了问题,但我无法理解它们。

我们有一个名为 EmployeeRecord 的类:

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 类的其余部分是什么?

第二个问题是员工数据库的其余部分应该是什么?我的意思是如何将 EmployeeRecord 添加到员工集合中? 我对 EmployeeRecord 类的其余部分和 Collection 员工的其余部分有疑问。

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


import 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.