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.1634884286.txt.gz · Last modified: by Santiago Faci
