在 orElse 之后将对象添加到列表

Add Object to List after orElse

inscTipoTrabAval.getInscricaoTipoTrabalhoAvaliadorQuestoes()
    .stream()
    .filter(aq -> aq.getEventoQuestao().equals(eventoQuestao))
    .findFirst()
    .orElse(new InscricaoTipoTrabalhoAvaliadorQuestao(eventoQuestao, inscTipoTrabAval))
    .setJustificativa(justificativa);

我正在尝试将一个对象写入列表(如果它不存在于 orElse 中),但它没有添加到列表中。有什么办法吗?

最简单的是将列表存储在一个变量中,并检查您的可选内容

//assuming the list is not immutable
List<InscricaoTipoTrabalhoAvaliadorQuestao> list = inscTipoTrabAval.getInscricaoTipoTrabalhoAvaliadorQuestoes();
list.stream()
    .filter(aq -> aq.getEventoQuestao().equals(eventoQuestao))
    .findFirst()
    .ifPresentOrElse(
        existing -> existing.setJustificativa(justificativa),
        () -> {
            var value = new InscricaoTipoTrabalhoAvaliadorQuestao(eventoQuestao, inscTipoTrabAval));
            value.setJustificativa(justificativa);
            list.add(value);
        }
    );

如果你在 Java 8,你可以使用 if

Optional<InscricaoTipoTrabalhoAvaliadorQuestao> value = list.stream()
    .filter(aq -> aq.getEventoQuestao().equals(eventoQuestao))
    .findFirst()

if(value.isPresent()) {
    value.get().setJustificativa(justificativa);
} else {
    InscricaoTipoTrabalhoAvaliadorQuestao newValue = new InscricaoTipoTrabalhoAvaliadorQuestao(eventoQuestao, inscTipoTrabAval));
    newValue.setJustificativa(justificativa);
    list.add(newValue);
}