2011-11-20 153 views
-1

我有换每个使用嵌套的下面的代码循环中Job类和范畴类遍历2个的ArrayList属性(以及对所述性质的小逻辑):与迭代器嵌套for循环?

for(Object dobj : hospice.getCategorys()) { 
    Category cat = (Category) dobj; 
    for(Object pobj : cat.getJobs()) { 
     Job job = (Job) pobj; 

     if(job.getID() == id) { 
      System.out.println(
       String.format("The Job %d belongs to the (%s) %s Category.", 
           id, 
           cat.getCode(), 
           cat.getName())); 

      catFound = true; 
     } 

    } 
} 

反正是有通过这种方法使用Java迭代器来创建一个更加优雅且面向未来的解决方案?

谢谢。

+0

我不知道你在哪里学习过这样的风格,但我敢打赌,每一本Java新手书都会覆盖每个循环的用法,并适当使用泛型。我建议你带一本Java书,真正阅读一次,以便学习如何以应有的方式使用不同的设施。而且,请注意你的拼写。它应该是“类别”而不是“分类”。正确的拼写在可维护性方面很重要。 –

+0

getCategorys()和getJobs()返回什么类型? –

回答

3

带迭代器的嵌套循环可以。但更优雅的解决方案不要使用显式强制转换。最好的解决方案得到的类型化迭代器:

for (Category cat : hospice.getCategorys()){ 
    for (Job job : cat.getJobs()){ 
    // logic here 
    } 
} 

注意,在这种情况下,你的方法应该返回类型对象CategoryJob但不Object

+0

啊好的。 我有getCategorys()返回一个集合。用ArrayList 替换它现在可以工作。谢谢。 – Nick