2011-06-14 31 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

相关问题