Curso de Java | Contenedores

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

contenedores

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

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.