Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.
Añadir elementos a una colección
ArrayList <String> animales = new ArrayList<>();
animales.add("vaca");
animales.add("perro");
animales.add("elefante");
Recorrer una colección
Usando Iterator
Iterator <String> it = animales.iterator();
while(it.hasNext()){
String animal = it.next();
System.out.println(animal);
}
Usando for
for (String animal: animales) {
System.out.println(animal);
}
Usando foreach
animales.forEach(animal -> System.out.println(animal));
Funciones Lambda
En la expresión anterior hemos utilizado una función lambda para ejecutar código en cada una de las iteraciones del bucle foreach.
Una función Lambda (también llamada función anónima)…
- es una subrutina definida que no está enlazada a un identificador.
- son útiles para reducir la cantidad de código utilizado en tareas repetitivas.
- no es necesario especificar un tipo para los parámetros de entrada, ya que el compilador puede deducirlo.
- su expresión esta defnida por:
- Los parámetros
- El símbolo de flecha ->
- Un cuerpo que puede ser un bloque de código encerrado entre llaves o una sola expresión.
Streams
Los streams en Java objetos que almacenan colecciones de datos de manera que será posible realizar operaciones de manera eficiente y clara.
El método .stream() se utiliza para obtener un objeto de tipo stream a partir de una colección o estructura de datos.
Imagina que tienes una fila de elementos (como una cinta transportadora de cosas), y quieres realizar operaciones con esos elementos (filtrarlos, ordenarlos, transformarlos). Un stream te permite hacerlo sin tener que escribir mucho código, y lo hace de manera más funcional y declarativa, lo que significa que describes qué quieres hacer con los datos, en lugar de cómo hacerlo.
Algúnos métodos para manipular streams son filter, map, reduce…
Se introdujeron en Java 8 como parte del paquete java.util.stream
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10,10);
// filter: filtra los elementos, devolviendo sólo los que cumplan la condición
numeros.stream().filter( n -> n>5).forEach(n -> System.out.println("Números mayores que 5: "+ n));
// map: recorre los elemenetos del stream aplicando una manipulación a cada uno de ellos
numeros.stream().map( n -> n*2).forEach(n -> System.out.println("Números multiplicados por 2: " + n));
System.out.println("Suma de todos los números: "+ numeros.stream().reduce( 0, Integer::sum));
System.out.println("Todos los números son menores que 100: " + numeros.stream().allMatch(n -> n<100));
System.out.println("Ningún número es menor que 0: " + numeros.stream().noneMatch(n -> n<0));
System.out.println("Algún elemento es igual a 8: " + numeros.stream().anyMatch(n -> n==8));
System.out.println("Primer elemento: " + numeros.stream().findFirst().get());
System.out.println("Cantidad de elementos: " + numeros.stream().count());
Ver preguntas de la certificación