apuntes:streams
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
apuntes:streams [2021/10/22 06:31] – Santiago Faci | apuntes:streams [2023/05/28 12:02] (current) – [Operaciones finales] Santiago Faci | ||
---|---|---|---|
Line 8: | Line 8: | ||
===== Cómo crear Streams ===== | ===== Cómo crear Streams ===== | ||
- | Los \emph{streams} se pueden generar llamando al método | + | Los '' |
- | \verb java.util.Collection | + | |
- | \begin{lstlisting}[language=java] | + | < |
List< | List< | ||
listaAnimales.add(. . .); | listaAnimales.add(. . .); | ||
Line 17: | Line 16: | ||
listaAnimales.add(. . .); | listaAnimales.add(. . .); | ||
Stream< | Stream< | ||
- | \end{lstlisting} | + | </ |
También se pueden crear a partir de objetos de forma individual, sin partir de ninguna colección ya existente: | También se pueden crear a partir de objetos de forma individual, sin partir de ninguna colección ya existente: | ||
- | \begin{lstlisting}[language=java] | + | < |
Stream< | Stream< | ||
- | \end{lstlisting} | + | </ |
Y también se puede crear un stream a partir de un array: | Y también se puede crear un stream a partir de un array: | ||
- | \begin{lstlisting}[language=java] | + | < |
String[] nombres = {" | String[] nombres = {" | ||
Stream< | Stream< | ||
- | \end{lstlisting} | + | </ |
===== Operaciones intermedias ===== | ===== Operaciones intermedias ===== | ||
Line 36: | Line 35: | ||
Son aquellas operaciones que siempre acaban devolviendo el stream modificado. | Son aquellas operaciones que siempre acaban devolviendo el stream modificado. | ||
- | \begin{itemize} | + | * '' |
- | \item \textbf{distinct()}: Devuelve un stream con los elementos distintos | + | * '' |
- | \item \textbf{filter(Predicate<? | + | * '' |
- | \item \textbf{limit(long tamanoMaximo)}: Devuelve un stream con tantos elementos como el valor pasado como parámetro | + | * '' |
- | \item \textbf{map(Function<? | + | * '' |
- | | + | * '' |
- | \item \textbf{peek(Consumer<? | + | * '' |
- | \item \textbf{skip(long n)}: Elimina los \emph{n} primeros elementos y devuelve un stream con los restantes | + | * '' |
- | \item \textbf{sorted(Comparator<? | + | |
- | \item \textbf{unordered()}: Devuelve un stream desordenado | + | |
- | \end{itemize} | + | |
===== Operaciones finales ===== | ===== Operaciones finales ===== | ||
Line 52: | Line 48: | ||
En este caso, son las operaciones que devuelven como resultado algo diferente que el propio stream. | En este caso, son las operaciones que devuelven como resultado algo diferente que el propio stream. | ||
- | \begin{itemize} | + | * '' |
- | \item \textbf{boolean allMatch(Predicate<? | + | * '' |
- | \item \textbf{boolean anyMatch(Predicate<? | + | * '' |
- | \item \textbf{boolean noneMatch(Predicate<? | + | * '' |
- | \item \textbf{Optional< | + | * '' |
- | \item \textbf{Optional< | + | * '' |
- | \item \textbf{R collect(Collector<? | + | * '' |
- | \item \textbf{long count()}: Devuelve el número de elementos del stream | + | * '' |
- | \item \textbf{void forEach(Consumer<? | + | * '' |
- | \item \textbf{void forEachOrdered(Consumer<? | + | |
stream ordenado | stream ordenado | ||
- | \item \textbf{Optional< | + | * '' |
como parámetro | como parámetro | ||
- | \item \textbf{Optional< | + | * '' |
como parámetro | como parámetro | ||
- | \item \textbf{Object[] toArray()}: Devuelve el stream como array de Objetos | + | * '' |
- | \item \textbf{Iterator< | + | * '' |
- | \end{itemize} | + | |
Veamos algunos ejemplos para la siguiente colección: | Veamos algunos ejemplos para la siguiente colección: | ||
- | \begin{lstlisting}[language=java] | + | < |
List< | List< | ||
numeros.add(" | numeros.add(" | ||
Line 81: | Line 75: | ||
numeros.add(" | numeros.add(" | ||
numeros.add(" | numeros.add(" | ||
- | \end{lstlisting} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
numeros.stream() | numeros.stream() | ||
.filter(nombre -> nombre.startsWith(" | .filter(nombre -> nombre.startsWith(" | ||
.forEach(System.out:: | .forEach(System.out:: | ||
- | \end{lstlisting} | + | </ |
- | \begin{verbatim} | + | <code java> |
cinco | cinco | ||
cuatro | cuatro | ||
cinco | cinco | ||
- | \end{verbatim} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
numeros.stream() | numeros.stream() | ||
.distinct() | .distinct() | ||
.filter(nombre -> nombre.startsWith(" | .filter(nombre -> nombre.startsWith(" | ||
.forEach(System.out:: | .forEach(System.out:: | ||
- | \end{lstlisting} | + | </ |
- | \begin{verbatim} | + | <code java> |
cuatro | cuatro | ||
cinco | cinco | ||
- | \end{verbatim} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
numeros.stream() | numeros.stream() | ||
.filter(nombre -> nombre.startsWith(" | .filter(nombre -> nombre.startsWith(" | ||
.peek(nombre -> System.out.println(nombre.length())) | .peek(nombre -> System.out.println(nombre.length())) | ||
.forEach(System.out:: | .forEach(System.out:: | ||
- | \end{lstlisting} | + | </ |
- | \begin{verbatim} | + | < |
5 | 5 | ||
cinco | cinco | ||
Line 121: | Line 115: | ||
5 | 5 | ||
cinco | cinco | ||
- | \end{verbatim} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
numeros.stream() | numeros.stream() | ||
.peek(nombre -> System.out.println(nombre.length())) | .peek(nombre -> System.out.println(nombre.length())) | ||
.filter(nombre -> nombre.startsWith(" | .filter(nombre -> nombre.startsWith(" | ||
.forEachOrdered(System.out:: | .forEachOrdered(System.out:: | ||
- | \end{lstlisting} | + | </ |
- | \begin{verbatim} | + | <code java> |
3 | 3 | ||
3 | 3 | ||
Line 140: | Line 134: | ||
5 | 5 | ||
cinco | cinco | ||
- | \end{verbatim} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
Optional< | Optional< | ||
System.out.println(primerNumero.get()); | System.out.println(primerNumero.get()); | ||
- | \end{lstlisting} | + | </ |
- | \begin{verbatim} | + | <code java> |
uno | uno | ||
- | \end{verbatim} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
Optional< | Optional< | ||
System.out.println(primerNumero.get()); | System.out.println(primerNumero.get()); | ||
- | \end{lstlisting} | + | </ |
- | \begin{verbatim} | + | <code java> |
uno | uno | ||
- | \end{verbatim} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
// Orden no garantizado | // Orden no garantizado | ||
numeros.stream().parallel().forEach(System.out:: | numeros.stream().parallel().forEach(System.out:: | ||
- | \end{lstlisting} | + | </ |
- | \begin{verbatim} | + | <code java> |
tres | tres | ||
cinco | cinco | ||
Line 172: | Line 166: | ||
cinco | cinco | ||
uno | uno | ||
- | \end{verbatim} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
// Orden garantizado | // Orden garantizado | ||
numeros.stream().parallel().forEachOrdered(System.out:: | numeros.stream().parallel().forEachOrdered(System.out:: | ||
- | \end{lstlisting} | + | </ |
- | \begin{verbatim} | + | <code java> |
uno | uno | ||
dos | dos | ||
Line 186: | Line 180: | ||
cuatro | cuatro | ||
cinco | cinco | ||
- | \end{verbatim} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
Optional< | Optional< | ||
- | \end{lstlisting} | + | </ |
- | \begin{verbatim} | + | <code java> |
tres | tres | ||
- | \end{verbatim} | + | </ |
- | \begin{lstlisting}[language=java] | + | < |
List< | List< | ||
.sorted(Comparator.comparing(nombre:: | .sorted(Comparator.comparing(nombre:: | ||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||
- | \end{lstlisting} | + | </ |
---- | ---- | ||
- | (c) 2021 Santiago Faci | + | (c) 2021-2023 Santiago Faci |
apuntes/streams.1634884306.txt.gz · Last modified: 2021/10/22 06:31 by Santiago Faci