我有2个班级:1.员工管理班级,它具有员工类型的数组列表; 2.员工班级。检查已经存在的异常后,我必须将员工添加到arraylist中。 我在就业管理课程中拥有的代码是。
ArrayList<Employee> eme = new ArrayList<Employee>();
boolean addEmployee(Employee emp){
for(Employee e:eme)
{
if (e.getEmpId()==emp.getEmpId())
{
throw new AlreadyExistsException();
}
else if (e.getEmpId()!=emp.getEmpId())
{
eme.add(emp);
}
return true;
}
在我的员工类中,我有构造函数,getter和setters。在main方法中,我创建了一个员工管理类对象em,并称为addEmployee方法
em.addEmployee(e1);
问题在于,由于雇员管理类中的arraylist为null,for循环未得到执行,因此我无法检查雇员是否已存在异常。如何解决呢? (这是我的练习作业)
答案 0 :(得分:0)
您打算进行以下操作。
public boolean addEmployee(Employee emp) {
for (Employee e: eme) {
if (e.getEmpId() == emp.getEmpId()) {
throw new AlreadyExistsException();
}
}
eme.add(emp);
return true;
}
这里不需要布尔结果。
应该在eme
上的循环之外 添加到eme
中-否则会引发ConcurrentModificationException。
提示
也可以这样写:
List<Employee> eme = new ArrayList<>();
或使用Set:
Set<Employee> eme = new TreeSet<>(Comparator.comparingLong(Employee::getEmpId));
if (!eme.add(emp)) {
throw new AlreadyExistsException();
}
答案 1 :(得分:0)
您可以通过以下简单的if条件:
public void addEmployee(Employee emp) throws Exception {
if (eme.size() == 0) { // add as list is empty
eme.add(emp);
} else {
for (Employee e : eme) { // your logic as it is
if (e.getEmpId() == emp.getEmpId()) {
throw new Exception();
} else if (e.getEmpId() != emp.getEmpId()) {
eme.add(emp);
}
}
}
}
您可以调整使 this 方法根据需要返回boolean
的逻辑。这留给您作为练习!