我正在尝试刷新我的java技能。我正在进行一个简单的java任务。以下是前两个说明。
创建一个包含以下属性/变量的Employee类: 名称 年龄 系
创建一个名为Department的类,其中包含一个员工列表。
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;
}
}
答案 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;
}
}