2011-06-14 9 views
7

Una pregunta de la entrevista java. ¿Hay alguna forma en la programación java que no sean las construcciones de bucle para iterar a través de una colección determinada (una matriz) y trabajar en cada elemento de la colección.¿Cómo pasar por la colección sin utilizar ninguna construcción de bucle?

+0

significa "Goto" califican como un "bucle" constructo? :) – Nick

+0

@Nick no hay goto en Java. – pingw33n

+1

Obviamente ... un programador sensato no hace estas cosas en un programa real :-) –

Respuesta

19

La recursividad es una manera de hacerlo

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

+1 para código de muestra. –

+4

+1: Señalaría que, aunque puede hacer esto, cualquiera que haga esto en un sistema real merece ser despedido. : P –

+0

@Peter Lawrey estuvo de acuerdo – RMT

1

Puede intercambiar una solución iterativa por una recursiva. Los bucles son iterativos, así que solo crea una solución recursiva.

2

Sí, usted podría ir de forma recursiva a través de una función para obtener la misma funcionalidad:

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

Aparte de recursividad Commons-colección tiene métodos de utilidad que puede usar para hacer cosas en una colección. Tenga en cuenta que esta API también utiliza construcciones de bucle internamente. Sin embargo, el código de cliente se vería así:

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

Comprobar los CollectionUtils aquí: http://commons.apache.org/collections/apidocs/org/apache/commons/collections/Closure.html

+1

+1 Me gusta esto ... el incómodo zurdo no-que-nadie-estaba-esperando-acercamiento. Solo voy a confiar en que funciona. – Matt

Cuestiones relacionadas