2011-06-14 88 views
7

Java面試問題。有沒有什麼辦法在Java編程,然後循環結構遍歷給定的集合(一個數組),並在集合的每個元素上工作。如何在不使用任何循環結構的情況下通過集合?

+0

是否「轉到」資格作爲一個「循環」建設? :) – Nick 2011-06-14 13:40:53

+0

@Nick在Java中沒有轉到。 – pingw33n 2011-06-14 13:41:43

+1

顯然......一個理智的程序員不會在真正的程序中做這些事情:-) – 2011-06-14 13:45:15

回答

19

遞歸是一個辦法做到這一點

void it(Iterator i) { 
    if (i.hasNext()) { 
     System.out.println(i.next()); 
     it(i); 
    } 
} 
+0

+1代表示例。 – 2011-06-14 13:37:26

+4

+1:即使你能做到這一點,我也會指出這些,任何在真實系統中做到這一點的人都應該被解僱。 :P – 2011-06-14 13:49:48

+0

@Peter Lawrey同意 – RMT 2011-06-14 13:58:27

1

您可以交換遞歸迭代解決方案。循環是迭代的,所以只需創建一個遞歸解決方案。

2

是的,你可以遞歸經過一個函數來獲得相同的功能:

public void iterate(int[] array, int index){ 
    if (index >= array.length){ 
     return; 
    }else{ 
     //work with element at array[index] 
     iterate(array, index+1); 
    } 
} 
5

除了遞歸公共收集具有實用方法你可能會用來做一個集合的東西。請注意,這個API也在內部使用循環結構。但是,客戶端代碼看起來像:

CollectionUtils.forAllDo(
    yourCollection, 
    new Closure() { 
     void execute(java.lang.Object element) { 
     // do smt with element 
     } 
    } 
); 

檢查這裏的CollectionUtils:http://commons.apache.org/collections/apidocs/org/apache/commons/collections/Closure.html

+1

+1我喜歡這個......尷尬的左撇子不是什麼人都期待的方法。我會相信它的作品。 – Matt 2011-06-14 14:02:17

相關問題