比较2个数组列表和循环内容

时间:2013-02-14 14:32:21

标签: java arraylist

我正从2个数组列表中检索元素并循环并比较它们。 有没有更好的方法来循环这个?它有点慢,看起来效率不高

       String Name = employee.get(0).getEmpName();
       for(int i = 0; i < employee.size(); i++)
       {
           if (Name.equals(employee.get(i).getEmpName()))
           {
               for (int j = 0; j < employer.size(); j++)
               {
                   if (Name.equals(employer.get(i).getEmpChoice()) &&           (employers.get(j).getCompChoice() == 1))
                   {
                       if (!Test.contains(Name) ||  
                           !Test.contains(employers.get(j).getCompName()))
                       {
                            Test += Name + employers.get(j).getCompName() + "\n";
                       }
                   }
               }
           }
           else
           {
               Name = employees.get(i).getEmpName();
               i--;
           }
       }

1 个答案:

答案 0 :(得分:0)

首先,使用foreach语句,它们在眼睛上更容易

for(Employee emp : employee)

另一种更快的方法是使用地图来存储数据。所以你只需要遍历一个列表。

Map<String,Employee> employees;
for(Employer emp : employer){
    if(employees.get(emp.getEmpChoice()).getCompChoice() == 1){
        //do stuff
    }
}

根据您使用的Map的实施情况,这可能会加快您的流程。您的代码也更简洁。