我有一份员工名单。我的员工类如下
public class Employee{
int empid;
String name;
...
}
现在我想从empid为5的列表中删除一个员工。一种方法是迭代列表并检查empid是否== 5.还有其他方法可以做到吗?
还希望我的列表包含具有唯一empid的员工。任何尝试添加具有重复empid的员工都应该抛出异常。如何做到这一点?
答案 0 :(得分:2)
而不是List< Employee>
,请使用Set< Employee>
。
不要忘记覆盖Employee类的hashCode()
和equals()
方法。
答案 1 :(得分:2)
如果员工的订单具有相关性(或者您需要能够让一名员工多次代表),则需要将其存储在列表中。 (否则一套就足够了。)
我会Employee
覆盖equals
方法并使用List.remove(Object o)
。
来自List的API文档:
<强>
boolean remove(Object o)
强>
从该列表中删除第一次出现的指定元素(如果存在)(可选操作)。如果此列表不包含该元素,则不会更改。更正式地,删除具有最低索引i的元素,使得(o == null?get(i)== null:o.equals(get(i)))(如果存在这样的元素)。
具体而言,您可以执行类似
的操作public class Employee{
int empid;
String name;
public boolean equals(Object o) {
if (o == null || !(o instanceof Employee))
return false;
Employee e = (Employee) o;
return empid == e.empid && name.equals(e.name);
}
public int hashCode() {
return empid ^ name.hashCode();
}
}
答案 2 :(得分:0)
对于你的问题的第一部分,你可以调用remove()传入一个Employee对象,其equals()方法为id为5的Employee返回true。
对于您的第二部分,List
代替Set
,保证不会有任何重复。您的收藏是否有必要成为清单?