Cambiar el valor de un campo en un mapa de función del Arroyo

Nuñito de la Calzada :

Quiero cambiar el valor de un campo en una Stream. Estoy tratando de cambiarlo en una .mappero 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));
Andrew Tobilko:

Usted no se va a transformar la Stream<MenuAlertNotification>una Stream<Boolean>, así que no use mapel 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, nottransmite 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) -> notpodría ser transformado en una expresión perfectamente válido:

.<Consumer<MenuAlertNotification>>map(not -> n -> n.setRead(Boolean.TRUE))

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=178070&siteId=1
Recomendado
Clasificación