Java 按年龄方法排序,并在类中列出

Java 按年龄方法排序,并在类中列出,java,Java,我在这里尝试刷新我的java技能。我正在做一个简单的java作业。下面是前两个说明 创建具有以下属性/变量的Employee类: 名称 年龄 系 创建一个名为Department的类,该类将包含员工列表 a) Department类将有一个方法返回按年龄排序的员工 b) 部门的值只能是以下值之一: “会计” “市场营销” “人力资源” “信息系统” 我在第二步有点小麻烦。我需要帮助了解如何添加员工列表,如上面所说的,以及如何编写将通过按年龄排序员工返回的方法 我只想找个人解释一下怎么做。谢谢 到

我在这里尝试刷新我的java技能。我正在做一个简单的java作业。下面是前两个说明

  • 创建具有以下属性/变量的Employee类: 名称 年龄 系

  • 创建一个名为Department的类,该类将包含员工列表

  • a) Department类将有一个方法返回按年龄排序的员工

    b) 部门的值只能是以下值之一: “会计” “市场营销” “人力资源” “信息系统”

    我在第二步有点小麻烦。我需要帮助了解如何添加员工列表,如上面所说的,以及如何编写将通过按年龄排序员工返回的方法
    我只想找个人解释一下怎么做。谢谢

    到目前为止,我有这个

    员工类别:

     package simpleJavaAssignment;
    
    public class Employee {
    String name;
    int age;
    Department department;
    
    
    Employee(String n, int a, Department d)
    {
        this.name = n;
        this.age = a;
        this.department = d;
    }
    int gAge(){
    
    return age;
    }
    }
    
    系级:

    package simpleJavaAssignment;
    import java.util.*;
    
    public enum Department {
    
       ACCOUNTING("Accounting"), MARKETING("Marketing"), HUMAN_RESOURCES(
            "Human Resources"), INFORMATION_SYSTEMS("Information Systems");
    
       private String deptName;
    
        Department(String deptName) {
           this.deptName = deptName;
        }
    
       @Override
       public String toString() {
        return this.deptName;
       }
    
    }
    

    你已经有了一个解决方案的开端,但你还差得很远

    您的
    部门
    类(应该是类而不是枚举)应该包含
    员工
    对象的集合。在你的项目中,应该有一个顶级部门的集合

    至于排序,你应该看看界面。您实现了
    Comparator
    的自定义子类,该子类允许内置集合排序算法比较员工实例,从而实现所需的顺序

    public class EmployeeAgeComparator implements Comparator<Employee>
    {
        public int compare(Employee e) 
        {
            return (this.age < e.age)
                ? -1
                : (this.age > e.age) 
                     ? +1
                     : 0;
        }
    }
    
    public类EmployeeAgeComparator实现Comparator
    {
    公共整数比较(雇员e)
    {
    返回(this.agee.age)
    ? +1
    : 0;
    }
    }
    

    如果该
    员工
    小于
    e
    ,则返回
    -1
    ,如果他们年龄相同,则返回0,如果该
    员工
    年龄较大,则返回
    +1

    您已经有了解决方案的开端,但您还有很长的路要走

    您的
    部门
    类(应该是类而不是枚举)应该包含
    员工
    对象的集合。在你的项目中,应该有一个顶级部门的集合

    至于排序,你应该看看界面。您实现了
    Comparator
    的自定义子类,该子类允许内置集合排序算法比较员工实例,从而实现所需的顺序

    public class EmployeeAgeComparator implements Comparator<Employee>
    {
        public int compare(Employee e) 
        {
            return (this.age < e.age)
                ? -1
                : (this.age > e.age) 
                     ? +1
                     : 0;
        }
    }
    
    public类EmployeeAgeComparator实现Comparator
    {
    公共整数比较(雇员e)
    {
    返回(this.agee.age)
    ? +1
    : 0;
    }
    }
    

    如果该
    员工
    小于
    e
    ,则返回
    -1
    ,如果他们年龄相同,则返回0,如果该
    员工
    年龄较大,则返回
    +1

    您可以在将员工添加到列表时按年龄排序员工列表。 然后,当您想要获取列表时,只需返回它

    您不应该在
    Employee
    类中包含
    Department
    成员,相反,
    Department
    类应该包含
    Employee
    的列表

    package simpleJavaAssignment;
    import java.util.*;
    
    public class Department {
        private String deptName;
        private ArrayList<Employee> employees;
    
        Department(String deptName) {
           this.deptName = deptName;
           this.employees = new ArrayList<Employee>();
        }
        public String toString() {
            return this.deptName;
        }
        public void addEmployee(Employee a){
            if( employees.isEmpty())
            employees.add(a);
            else
            {
            int i;
            for( i = 0; i < employees.size(); ++i ){
                   if( employees.get(i).gAge() > a.gAge()  ){
                       employees.add(i, a);
                       break;
                   }
                }
            if( i == employees.size() )
                employees.add(a);
    
            }
        }
    
        public ArrayList<Employee> getEmployees(){
            return employees;
        }
    
    }
    
    package-simpleJavaAssignment;
    导入java.util.*;
    公共课系{
    私有字符串deptName;
    私人ArrayList员工;
    部门(字符串部门名称){
    this.deptName=deptName;
    this.employees=new ArrayList();
    }
    公共字符串toString(){
    返回此.deptName;
    }
    公共无效添加员工(员工a){
    if(employees.isEmpty())
    加入(a);
    其他的
    {
    int i;
    对于(i=0;ia.gAge()){
    增加(i,a);
    打破
    }
    }
    如果(i==employees.size())
    加入(a);
    }
    }
    公共阵列列表getEmployees(){
    返回员工;
    }
    }
    
    将员工添加到列表中时,可以将员工列表设置为按年龄排序。 然后,当您想要获取列表时,只需返回它

    您不应该在
    Employee
    类中包含
    Department
    成员,相反,
    Department
    类应该包含
    Employee
    的列表

    package simpleJavaAssignment;
    import java.util.*;
    
    public class Department {
        private String deptName;
        private ArrayList<Employee> employees;
    
        Department(String deptName) {
           this.deptName = deptName;
           this.employees = new ArrayList<Employee>();
        }
        public String toString() {
            return this.deptName;
        }
        public void addEmployee(Employee a){
            if( employees.isEmpty())
            employees.add(a);
            else
            {
            int i;
            for( i = 0; i < employees.size(); ++i ){
                   if( employees.get(i).gAge() > a.gAge()  ){
                       employees.add(i, a);
                       break;
                   }
                }
            if( i == employees.size() )
                employees.add(a);
    
            }
        }
    
        public ArrayList<Employee> getEmployees(){
            return employees;
        }
    
    }
    
    package-simpleJavaAssignment;
    导入java.util.*;
    公共课系{
    私有字符串deptName;
    私人ArrayList员工;
    部门(字符串部门名称){
    this.deptName=deptName;
    this.employees=new ArrayList();
    }
    公共字符串toString(){
    返回此.deptName;
    }
    公共无效添加员工(员工a){
    if(employees.isEmpty())
    加入(a);
    其他的
    {
    int i;
    对于(i=0;ia.gAge()){
    增加(i,a);
    打破
    }
    }
    如果(i==employees.size())
    加入(a);
    }
    }
    公共阵列列表getEmployees(){
    返回员工;
    }
    }
    
    作为设计点,您可能不应该对部门类型使用
    enum
    ,因为它们可能会相对频繁地更改。另外,你所说的部门仅仅是一个部门的名称
    Department
    应该是一个包含
    Employee
    对象集合的类。让Employee类实现Comparator接口远(b)来说,您只需要在setter中为
    Department
    变量提供一些验证。提供允许的部门字符串的静态集合,并在使用