Si tuviéramos que escribir código para escribir por pantalla ’0123456789′ utilizaríamos los bucles tradicionales for o while.

1
for (i=0; i<10; i++){
2
    print i
3
}

 

1
int i = 0
2
while (i < 10) {
3
    print i
4
    i++
5
}

Sin embargo, en Groovy hay muchas formas diferentes de implementar un bucle, unas más conocidas y utilizadas que otras.

Veamos cuáles son las alternativas que nos ofrece este lenguaje:

1) upto / downto

Ejemplo:

1
0.upto 9, {print it}

Ejemplo: para implementar un bucle decreciente de 9 a 0, en este caso, la salida por pantalla sería 9876543210.

1
9.downto 0, {print it}

2) times

Ejemplo:

1
10.times {print it}

3) step

Ejemplo:

1
0.step 10, 1, {print it}

4) each

Ejemplo: utilizando un rango numérico.

1
(0..9).each {print it}

Ejemplo: utilizando una lista de valores numéricos.

1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].each{ print it}

5) eachWithIndex

Ejemplo:

1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9].eachWithIndex {listValue, index -> print listValue}

6) for

Ejemplo: utilizando un rango numérico.

1
for (i in 0..9) {
2
 print i
3
}

Ejemplo: utilizando una lista de valores numéricos.

1
for (int i : [0,1,2,3,4,5,6,7,8,9]) {
2
        print i
3
}

Adjunto un gráfico donde se puede comprobar que la implementación más eficiente sería utilizar el bucle for con un rango numérico. Utilizar el bucle for con una lista, sería un poco menos eficiente, pero sin duda, el tiempo de ejecución seguiría siendo mucho menor que utilizando otras implementaciones.

Comparativa de tiempo de ejecución de bucles

 

Etiquetas: , ,

3 Respuestas


  1. burkan on 18 sep 2012

    me gusta :)
    Gracias

  2. Yurena on 19 sep 2012

    ¿Y cuál dirías que es el sistema más eficiente?

    • Mamen on 22 sep 2012

      Hola Yurena.

      He actualizado el post incluyendo un gráfico. Espero que esto responda tu pregunta.

      Saludos!!


Deja tu comentario


8 + 7 =