0% encontró este documento útil (0 votos)
29 vistas23 páginas

Funciones y Streams en Java 8

Java 8 introdujo nuevas características para el manejo de funciones lambda, streams, fechas y horas. Incluye interfaces funcionales como Consumer, Supplier, Function y Predicate que permiten crear funciones anónimas. Los streams permiten procesar colecciones de datos de forma funcional mediante operaciones como map, filter y reduce. Las clases LocalDate, LocalTime y LocalDateTime facilitan el manejo de fechas y horas de forma inmutable.

Cargado por

hector herrera
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
29 vistas23 páginas

Funciones y Streams en Java 8

Java 8 introdujo nuevas características para el manejo de funciones lambda, streams, fechas y horas. Incluye interfaces funcionales como Consumer, Supplier, Function y Predicate que permiten crear funciones anónimas. Los streams permiten procesar colecciones de datos de forma funcional mediante operaciones como map, filter y reduce. Las clases LocalDate, LocalTime y LocalDateTime facilitan el manejo de fechas y horas de forma inmutable.

Cargado por

hector herrera
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Java 8

Tipos de Funciones Lamdas


Consumer y Supplier

Consumer:son funciones que reciben un dato y no devuelven nada su función es consumir
o procesar ese dato


Supplier: es una interfaz funcionar que su función es devolver algo y no recibe ningún
parámetro


Nota: también existe un BiConsumer que recibe dos parámetros y no devulve nada solo
consume esos dos parametros
Function y Predicate

Function: Es una Interfaz para que nos permite crear una función la cual recibe dos
parámetros genéricos uno es el valor que recibirá y la otra el valor que devolverá


Predicate: Es una interfaz que trabaja sobre un tipo de dato pero lo que hace es
testear si algo es verdad en otras palabras evaluá una condición


Nota:tambien existe BiFuction que recibe tres genéricosG dos de los datos que recibe
y el otro lo que devolverá la función, de igual manera esta Bipredicate que recibe dos
genéricos de los parámetros que recibe y devuelve un bolean
UnaryOperator Y BinaryOperator

UnaryOperator:Estas funciones extienden de Function. Quiere decir que tienen el método apply.
Nos ayuda a crear una función sin tener que preocuparnos por especificar que devolverá la función,
devuelve el mismo tipo que recibe especificado en el genérico


BinaryOperator:Esta función recibe 2 tipos de datos y devuelve el mismo tipo de dato especificado
en el genérico
stream java8

Es una api que nos sirve para implementar flujos de datos como una tubería los
streams no son para almacenar datos si no que son para procesar datos típicamente
a través de una colección de java cualquier clase que implemente la interfaz
colecction o un arreglo , cabe mencionar que los streams una vez procesados son
inmutables osea solo se pueden procesar una sola vez por cada stream
Operador Map()

Map: sirve para transformar un dato a otro dato, recibe una lamda de tipo
function, recibe un elemento lo modifica y devuelve el elemento modificado o
el elemento a retornar creando un stream del elemento retornado
FlatMap

FlatMap: similar al map solo que flatMap devuelve un stream por cada dato y luego lo convierte
en un solo stream, se usa cuando un el objeto que queremos mapear a otro devuelve un stream
y lo aplana en un solo stream para no tener un stream de stream, map se usa cuando el objeto
devuelve otro objeto
Operador filter() y anyMach(),
Count()

Filter:Sirve para filtrar en base a una condición, recibe una lamda de tipo predicate y devuelve un stream con
los datos que cumplan esa condición


AnyMach: Verifica si existe un objeto en base a una condición y devuelve un boolean esta es una operación
terminal no devulve un stream


Count(): cuenta los elementos de una colección , no recibe ningún parámetro y devuelve un long como
resultado es una operación terminal
Operador distinct,reduce

Distinct: devuelve un Stream sin elementos repetidos no es una operación terminal para usarla con objetos
hay que sobre escribir el metodo equals() y hascode()


Reduce: es una funcion de srtreams que reduce los elementos uno solo , es como una acumulador y es
una operación terminal y recibe un BinaryOperator , también puedes colocar un primer elemento como
inicio y luego ir acumulando con reduce(primerElemento,(acum, numero))
Limit() y skip() generate(), Collect()

Limit: limita a dos elementos el stream por ejemplo si son 10 creara un nuevo stream con los dos primeros
elementos

Generate: genera un stream infinitamente y recibe un supplier para que no sea infinito podemos usar limit()


Skip: salta los dos primeros elementos y empieza a partir del tercer elementos

Collect():es un operador terminal sirve para convertir un Stream a una lista


Parallel

Parallel: es una función que nos permite ejecutar las operaciones creando varios hilos para poder
ejecutarlas mas rápido esto es útil en caso que tengamos que hacer tareas pesadas parallel nos ayuda


Nota: parallel es uitl cuando tenemos que procesar operaciones pesadas pero no es bueno para
operaciones sencillas, solo usar cuando tengamos que hacer operaciones que tarden mucho
IntStream
Es una variante de Stream es de tipo integer también existe el LongStream y el DoubleStream y no
se necesita especificar el tipo de dato como genérico debido a que opera con el dato declarado.


sum() que suma todos los elementos del IntStream y devuelve un int operación terminal

Range(): establece un rango para hacer una operación desde 5 hasta 19 para que se incluya el 20
esta el rangeClosed()


SummaryStatistics() : sirve para obtener un Objeto de tipo IntSummaryStatistics y poder hacer
operaciones estadísticas como el máximo de los numero o obtener el mínimo o la suma total etc
MaptoInt

mapToInt: igual que el map pero devuelve un intStream estos tambien lo tienen los streams
normales y devuelve un intStream;


Nota: existe mapToLong y para los otros datos primitivos como double etc
Api Optional

El api de optional es una especie de contenedor que engloba un dato esto nos permite evitar los
nullPoinExeception

Formas de crear un optional:
Ispresent() , isEmpty(), ifPresent(),
ifPresentOrELse()

IsPresent: devuelve un bolean, true si el optional tiene algun valor y false si es null o es un optional vació

IsEmpty: devuelve un bolean, true si esta vació o el valor es null y false si tiene algún dato

IfPresent: recibe un consumer para hacer algo con el dato si esta presente de lo contrario no hará nada

IfPresentOrElse: recibe un consumer que se ejecutara en caso que el dato este presente, recibe también
un runnable en caso que el dato no este presente se ejecutara
OrElse, OrElserGet,or()

Or: recibe un supplier ,devuelve un optional con la descripción del objeto en caso contrario devuelve el
optional de la expresión que recibe

OrElse:devuelve el valor en caso que se encuentre de lo contrario devuelve el valor que se le pase en el
método En caso que se encuentre el valor igual se creara el objeto pero no se devolverá

OrElseGet: recibe un supplier que devuelve el objeto en caso que no se encuentre el valor en el optional o
sea null. En caso que el se encuentre el valor no se creara el objeto del supplier
OrElseTrow

Devuelve el objeto en caso que se encuentre en el optional de lo contrario lanza una
exception [NoSuchElementException: No valué present]

también se le puede pasar un supplier que devuelve una excepción del que se le
especifique pueden ser excepciones personalizadas
Optional con Filter, map ,flatMap

Optional también cuenta con estos métodos en caso que se quiera procesar un dato y en
caso que podemos devolver otro dato con orElse o cualquier método que ya vimos
anteriormente


En el caso del faltMap es igual que el de stream se usa cuand el objeto devuelve un optianal
en este caso y Map se usa cunado el objeto devuelve otro objeto
API TIME

Es una api introducida en java 8 que hace mas
fácil manejar las fechas podemos obtener la
hora , la fecha podemos marcar un punto en
el periodo de tiempo , podemos obtener zonas
horarias etc
Local Date

LocalDate:Es una clase que nos ayuda a obtener una fecha ademas que nos ayuda a manipular la fecha a
través de minus para restar y plus para sumar ademas podemos obtener un día mes o el año, esta clase
es inmutable por lo que si queremos crear una nueva fecha tendremos que crear una nueva instancia con
la fecha modificada, podemos comparar fechas a travez del metodo isequals() isBefore() isAtfer()


Tambien podemos obtener los nombres del mes y del dia en español

Tambien podemos dar formato a la fecha y hora con DateTimeFormatter , lo podemos


pasar a la fecha a traves del metodo format o podemos pasarselo al objeto de formato
a travez del metodo format
Local Time
Esta clase nos permite manipular manejar las horas al igual que Local Date y esta clase también es inmutable una
vez creada, tambien podemos sumar con el metodo plus y restar con minus las horas minutos y segundos y
milisegundos

Tambien podemos comparar el tiempo con los metodo IsEquals(), IsBefore, isAfter()
LocalDateTime y zonaDateTime

Esta clase nos permite manejar la fecha y hora tambien se le puede pasar el formato de la misma manera
vista anteriormente con un patter “08/06/1997T23:30:19” seria dd/MM/yyyyThh:mm:ss

Esta clase combina todas las funcionabilidades tanto de horas como las de fecha vista anteriormente

ZonaDateTime: nos permite implementar y manejar horas por zona primero horas en diferentes zonas, en
caso que queramos implementar

También podría gustarte