Quiero cambiar el valor de un campo en una Stream
. Estoy tratando de cambiarlo en una .map
pero me dio un error de compilación
Error de sintaxis en Token (s), constructo extraviado (s)
la corriente:
user.getMenuAlertNotifications()
.parallelStream()
.filter(not -> not.getUser().getId()==userId &&
notificationList.getIds().contains(not.getId()))
.map(not -> not.setRead(Boolean.TRUE) -> not)
.forEach(not -> menuService.save(not));
Usted no se va a transformar la Stream<MenuAlertNotification>
una Stream<Boolean>
, así que no use map
el cual se supone que es un no-interferencia , sin estado operación:
.filter(...)
.forEach(not -> {
not.setRead(Boolean.TRUE);
menuService.save(not);
});
En una nota lateral, not
transmite una observación negativa que algunos podrían encontrar confuso o extraño (lo hice). Me gustaría cambiar el nombre de ese argumento lambda notification
, aunque se puede encontrar una opción más corta.
Por cierto, la construcción not -> not.set Read(Boolean.TRUE) -> not
podría ser transformado en una expresión perfectamente válido:
.<Consumer<MenuAlertNotification>>map(not -> n -> n.setRead(Boolean.TRUE))