Siguiendo con la serie sobre Java Streams, en este post analizaremos como funcionan los filtros sobre Streams de Java a través de ejemplos.
Preparando el ejemplo
Antes de empezar con los ejemplos debemos entender como funciona un api que utilizaremos en nuestros ejemplos su nombre es Java Faker, puedes aprender más sobre la misma en el siguiente enlace java-faker. Este api nos permitirá generar datos de ejemplo.
Problema a resolver
Dado un arreglo de 1000 nombres buscar todos los que inician con la letra A, veamos el código que genera la lista de nombres:
public static List getNames() { Faker faker = new Faker(); List names = new ArrayList(); for (int i = 0; i <= 1000; i++) { names.add(faker.name().firstName()); } return names; }
Haciendo uso del API Java Faker generamos 1000 nombres aleatorios y los devolvemos.
Resolviendo el problema utilizando streams
Una vez que ya sabemos como obtener la lista de nombres el siguiente paso será implementar la lógica para filtrar solo los nombres que inician con la letra A, veamos el código:
public static void main(String[] args) { List names = getNames(); List collect = names.stream() .filter(name -> name.startsWith("A")) .collect(Collectors.toList()); for (String string : collect) { System.out.println(string); } }
En el código anterior se puede ver que es muy simple hacer el filtro utilizando una función lambda que determina que registros se permitirán y cuales no, veamos la salida:
Alford Annetta Adonis Alfred Anais Ashly Aletha Aniya Alanna Ahmed Asa Arlo Angeline Alexzander Alexane America Annabell Alexandra Alysson Amparo Agustin Anya Aurore Abe Augustine Adell Ava Alva Aiyana Augustus Asha Alvera Abner Ashlee Anais Andrew Alejandra Amely Annalise Adelia Alf Ashley Aylin Aubrey Abelardo Angelina Andres Agustina Aileen Alexys Aglae Albina Anais Alexander Ashtyn Adelbert Alek Alaina Asia Ari Ara Arturo Aubree Anne Amelia Alfreda Aditya Anais Alex Alexandre Ara Alize Autumn Anabel Aletha Akeem Antonietta Aliyah Abdul Arturo Ashton Abner Alisa Abbigail Amber Anais Alanis Abe Amiya Alvah Alejandrin Angelita
Solo nombres que contengan la letra A serán mostrados debido al filtro que realizamos.
Para enterarte sobre futuros posts te recomendamos seguirnos en nuestras redes sociales: https://twitter.com/geeks_mx y https://www.facebook.com/geeksJavaMexico/.
Autor: Alejandro Agapito Bautista
Twitter: @raidentrance
Contacto:raidentrance@gmail.com