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