我正在编制一种方法来展示购物中心的所有员工:
public SList<Empleado> getEmployees(boolean show) {
SList<Employee> allEmployees = new SList<Employee>();
for (int i = 0; i < centreEmployees.length; i++) {
allEmployees.addFirst(centreEmployees[i]);
}
for (int j = 0; j < shopList.length; j++) {
for (int x = 0; x < shopList[j].getEmployees().length; x++) {
allEmployees.addFirst(shopList[j].getEmployees()[x]);
}
}
if (show) {
for (int i = 0; i < allEmployees.getSize(); i++) {
System.out.println(allEmployees.getAt(i).toStringE());
}
}
return allEmployees;
}
centreEmployees和shopList是两个阵列,我想将我添加到allEmployees列表的员工与我从shopList[j].getEmployees()[x]
添加的员工进行比较。
这是因为两家商店可能拥有相同的员工,当我试图展示它们时,它们显示重复,我只想展示一次。
答案 0 :(得分:0)
它们显示重复,我只想一次显示它们
只需尝试Set即:
不包含重复元素的集合。更正式地说,集合不包含元素对e1和e2,使得e1.equals(e2)和至多一个null元素。正如其名称所暗示的,该界面模拟数学集抽象。
您需要通过覆盖equals()
和hashCode()
方法来提供Employee对象相等的逻辑。
class Employee{
String name;
public boolean equals(Object o) {
...//logic to compare the equality of the Employee object
}
public int hashCode() {
...
}
}
HashSet在内部使用hashCode()
方法检查是否相等。如果两个Employee对象生成相同的哈希代码,则equals()
方法会检查是否相等。
查看Set
接口的其他实现。