Me he transformado en un habitual para el código de bucle en java 8 corrientes. Probé unos pocos, pero yo todavía estoy aprendiendo esto y quedando sin ideas, por favor sugerir ideas. se puede esto simplifica aún más? Aparte del uso de forEach, no soy capaz de cambiar mucho. Además, ¿por qué tengo que encasillado del Eid al cuerdas en getERecordFromId ((String) Eid)
Stream <String>eIdsStream = getEidStream();
final HashSet<String> declinedRecords = new HashSet<>();
eIdsStream.forEach (eid -> {
ERecord eRecord = getERecordFromId((String)eid);
if(eRecord.getEHash() != null && Status.DECLINED == eRecord.getStatus()) {
declineRecords.add(eRecord.getEHash());
}
}
Se requiere el casting ya que utiliza una prima Stream
variable. Suponiendo getEidStream()
devuelve una Stream<String>
, debe haber asignado a una Stream<String>
variable o no asignado a una variable en absoluto.
El uso de forEach
derrotas el propósito de utilizar Stream
s en el primer lugar.
Debe utilizar filter
y map
transformar el Stream
de mantener los elementos requeridos, y luego a cobro revertido a una Set
.
Set<String> declinedRecords =
getEidStream().map(eid -> getERecordFromId(eid))
.filter(eRecord -> eRecord.getEHash() != null && Status.DECLINED == eRecord.getStatus())
.map(ERecord::getEHash)
.collect(Collectors.toSet());