2011-11-20 177 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