Java 8 Streams – IntStream (Range y rangeClosed)


En este post continuaremos con la serie de Java8 Streams, el día de hoy explicaremos el funcionamiento de range y rangeClosed.

IntStream

IntStream es un stream (flujo) de valores enteros primitivos, es posible encontrar streams para otros datos primitivos pero todos tienen un comportamiento similar, a continuación se muestran algunos ejemplos explicando la manera tradicional y haciendo uso de Streams:

Problema 1

Imprimir los números del 0 al 9.

Sin utilizar streams

public static void imperativeExample1() {
	for (int i = 0; i< 10; i++) {
		System.out.print(i);
	}
}

En este ejemplo se puede ver que se imprimen los números del 0 al 9 a través de un ciclo for.

Utilizando streams

public static void streamExample2() {
	IntStream.range(0, 10).forEach(System.out::print);
}

Podemos ver que con una línea de código podemos obtener el mismo resultado.

Salida:

Imperative example
0123456789
Stream example
0123456789

La salida anterior muestra que haciendo uso de ambos métodos podemos obtener la misma salida.

Problema 2

Iterar sobre una lista de personas.
Persona.java

public class Person {
	private String name;
	private String lastName;
	private Integer age;

..... Getters / Setters

}

La clase anterior es una simple clase java y no tiene nada que ver con Streams.

Sin utilizar streams

public static void simpleExample2() {
	List people = getPeople();
	for (int i = 0; i < people.size(); i++) {
		System.out.println(people.get(i));
	}
}

Es posible hacer uso de foreach para hacerlo pero en este ejemplo queremos mostrar el uso de IntStream y por esta razón lo compararemos con iterar sobre una lista haciendo uso de un índice.

Utilizando streams

public static void streamExample2() {
	List people = getPeople();
	IntStream.range(0, people.size()).forEach(index -> System.out.println(people.get(index)));
}

Podemos ver que con una línea de código es posible iterar sobre la lista e imprimir el resultado haciendo uso de expresiones lambda. Este ejemplo se utiliza en caso de que la lógica de tu código requiera conocer el índice en el que se encuentra, en otro caso es posible hacerlo del siguiente modo:

public static void streamExample2() {
	List people = getPeople();
	people.forEach(System.out::println);
}

El código anterior iterará sobre la lista e imprimirá cada elemento en pantalla.

En futuros posts hablaremos sobre todas las operaciones que puedes llevar a cabo haciendo uso de streams, 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

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s