1

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

  1. 使用以下属性/变量创建一个 Employee 类:姓名年龄部门

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

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

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

我在第 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;
   }

}
4

2 回答 2

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

如果 this小于,则通过返回来履行Comparator合同,如果它们年龄相同,则返回零,如果 this更大则返回。-1Employeee+1Employee

于 2013-08-21T00:23:38.580 回答
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;
    }

}
于 2013-08-21T00:44:27.153 回答