2014-05-03 112 views
0

我编程的方法,从购物中心显示所有员工:如何比较数组中的元素与SList中的元素?

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

什么是'SList'? – Braj

+2

如果你的'SList'类有一个包含方法,你可以在将该员工添加到你构建的SList之前使用它(这不会很有效)。如果您可以使用JDK集合,那么'Set'可能就是您正在寻找的结构。 –

+0

什么是'toStringE()'? – Braj

回答

0

他们表现出重复的,我只是想向他们展示一个时间

只是一味Set,上面写着:

不包含重复元素的集合。更正式地,集合不包含e1和e2这样的元素对,使得e1.equals(e2)和至多一个空元素。正如其名称所暗示的那样,该界面模拟数学集抽象。

您需要通过重写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接口的其他实现。