bucle foreach()
- No se usa el operador Lambda: el bucle foreach en Java no usa ninguna operación lambda y, por lo tanto, las operaciones se pueden aplicar en cualquier valor fuera de la lista que estamos usando para la iteración en el bucle foreach. El bucle foreach se ocupa de iterar la colección o la array almacenando cada elemento de la lista en una variable local y realizando cualquier funcionalidad que queramos.
Java
public class GFG { public static void main(String[] args) { String[] arr = { "1", "2", "3" }; int count = 0; String[] arr1 = { "Geeks", "For", "Geeks" }; for (String str : arr) { System.out.print(arr1[count++]); } } }
Producción:
GeeksForGeeks
- Aquí las operaciones de conteo son posibles incluso siendo una variable fuera del ciclo porque está en el alcance del ciclo foreach.
- Se puede usar para todas las colecciones y arrays: se puede usar para iterar todas las colecciones y arrays en Java.
Java
public class GFG { public static void main(String[] args) throws Exception { String[] arr = { "1", "2", "3" }; int count = 0; String[] arr1 = { "Geeks", "For", "Geeks" }; for (String str : arr) { System.out.print(arr1[count++]); } } }
Producción:
GeeksForGeeks
- Las declaraciones de devolución funcionan dentro del ciclo: la función puede devolver el valor en cualquier momento dentro del ciclo. Por ejemplo, si queremos imprimir solo los primeros 2 valores de cualquier colección o array y luego queremos devolver cualquier valor, se puede hacer en el bucle foreach en Java. El siguiente código es para imprimir el segundo elemento de una array.
Java
public class GFG { public static String frechlop(String[] geek) { int count = 0; for (String var : geek) { if (count == 1) return var; count++; } return ""; } public static void main(String[] args) throws Exception { String[] arr1 = { "Geeks", "For", "Geeks" }; String secelt = frechlop(arr1); System.out.println(secelt); } }
Producción:
For
stream().paraCada()
- Se usa el operador lambda: en stream().forEach() , se usan lambdas y, por lo tanto, no se permiten operaciones en variables fuera del bucle. Sólo son posibles las operaciones sobre las colecciones en cuestión. En esto, podemos realizar operaciones en Colecciones por código de una sola línea que lo hace fácil y simple de codificar.
Java
import Java.util.*; public class GFG { public static void main(String[] args) throws Exception { List<String> arr1 = new ArrayList<String>(); int count = 0; arr1.add("Geeks"); arr1.add("For"); arr1.add("Geeks"); arr1.stream().forEach(s -> { // this will cause an error count++; // print all elements System.out.print(s); }); } }
- Nota: La operación «contar ++» generará un error porque las operaciones lambda no permiten ninguna operación de variable externa dentro de sí mismas.
- Solo se usa para iterar colecciones: stream().forEach() solo se usa para acceder a las colecciones como set y list. También se puede utilizar para acceder a arrays.
Java
import java.util.*; public class GFG { public static void main(String[] args) throws Exception { String[] arr1 = { "Geeks", "for", "Geeks" }; // The next line will throw error // as there is no such method as stream() arr1.stream().forEach( s -> { System.out.print(s); }); } }
- Las declaraciones de devolución no funcionan dentro de este ciclo, pero las llamadas a funciones son muy fáciles de ejecutar:
la declaración de devolución dentro del ciclo no funciona. La misma funcionalidad de obtener el segundo elemento no se puede realizar en el mismo método forEach().
Java
import Java.util.*; public class GFG { static String second(List<String> list) { list.stream().forEach( s -> { // The next line will throw error // as no return allowed // if(s=="For")return s; }); return "null"; } public static void main(String[] args) throws Exception { List<String> arr1 = new ArrayList<String>(); arr1.add("Geeks"); arr1.add("For"); arr1.add("Geeks"); String f = second(arr1); System.out.println(f); } }
Producción:
null
foreach paralelo()
- Funciona en el concepto de subprocesos múltiples: la única diferencia entre stream().forEach() y foreach() paralelo es la característica de subprocesos múltiples dada en forEach() paralelo. Esto es mucho más rápido que foreach() y stream.forEach(). Al igual que stream().forEach(), también usa el símbolo lambda para realizar funciones.
El ejemplo que proporciona su naturaleza de subprocesos múltiples que se proporciona a continuación.
Está claramente implícito que la salida nunca estará en el mismo orden para imprimir las strings debido a la naturaleza multiproceso de parallelStream.
la
Producción:
ForGeeksGeeks
diferencia tabular
bucle foreach() | ciclo stream().foreach() | Bucle paraleloStream().foreach() |
---|---|---|
No se utilizan operadores lambda. | Se utiliza el operador lambda | Se utiliza el operador lambda |
Se puede utilizar para acceder a arrays y colecciones. | Solo puede acceder a las colecciones | Solo puede acceder a las colecciones |
Las declaraciones de retorno o control funcionan dentro del bucle | Las declaraciones de retorno o control no funcionan dentro del bucle. | Las declaraciones de retorno o control no funcionan dentro del bucle. |
Sin subprocesos múltiples, por lo que los datos lentos están en secuencia | Sin subprocesos múltiples, por lo que los datos lentos están en secuencia | Es multiproceso, por lo tanto, muy rápido y la secuencia es diferente. |
Publicación traducida automáticamente
Artículo escrito por piyush25pv y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA