按年龄方法排序,并在课堂上列出

时间:2013-08-21 00:15:52

标签: java

我正在尝试刷新我的java技能。我正在进行一个简单的java任务。以下是前两个说明。

  1. 创建一个包含以下属性/变量的Employee类: 名称 年龄 系

  2. 创建一个名为Department的类,其中包含一个员工列表。

  3. a)部门班级将有一种方法可以按年龄退回员工。

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

    我在第2步遇到了一些麻烦。我需要帮助弄清楚如何添加员工列表 如何编写方法将按年龄排序的员工进行排序
    我想让某人解释如何做到这一点。谢谢。

    到目前为止,我有这个。

    员工类:

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

2 个答案:

答案 0 :(得分:3)

你有一个解决方案的开端,但你还有一段路要走。

您的Department类(应该是类而不是枚举)应包含Employee个对象的集合。在您的计划中,最高级别也应该有一系列部门。

关于排序,您应该查看Comparator界面。您实现了Comparator的自定义子类,它允许内置集合排序算法比较Employee实例,以便实现所需的顺序。

public class EmployeeAgeComparator implements Comparator<Employee>
{
    public int compare(Employee e) 
    {
        return (this.age < e.age)
            ? -1
            : (this.age > e.age) 
                 ? +1
                 : 0;
    }
}

如果此Comparator小于-1,则返回Employee,如果年龄相同,则返回e+1这个Employee已经过时了。

答案 1 :(得分:1)

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

您不应在Department课程中包含Employee成员,相反,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;
    }

}