es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir Map>> a Object EventoAvaliacaoDTO.

Tengo un Map<TipoQuestionario, Map<AvaliadorEventoDTO, List<EventoQuestaoDTO>>> y me gustaría transformarlo en un objeto EventoAvaliacaoDTO.

Mi objeto:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class EventoAvaliacaoDTO {
</p>

<pre><code>private TipoQuestionario tipoQuestionario;
private AvaliadorEventoDTO avaliadorEventoDTO;
private List<EventoQuestaoDTO> eventoQuestoesDTO;
</code></pre>

<p>}

¿Cómo puedo hacer esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para transformar un Map<tipoquestionario,></tipoquestionario,><avaliadoreventodto,></avaliadoreventodto,><eventoquestaodto>>> en un objeto de EventoAvaliacaoDTO, puedes utilizar streams y expresiones lambda de Java para aplanar los mapas anidados.

    Aquí tienes una implementación posible:

    public EventoAvaliacaoDTO transform(Map<tipoquestionario,></tipoquestionario,><avaliadoreventodto,></avaliadoreventodto,><eventoquestaodto>>> input) {
        List<eventoavaliacaodto> result = input.entrySet().stream()
            .flatMap(tipoEntry -> tipoEntry.getValue().entrySet().stream()
                .map(avaliadorEntry -> new EventoAvaliacaoDTO(
                    tipoEntry.getKey(),
                    avaliadorEntry.getKey(),
                    avaliadorEntry.getValue())))
            .collect(Collectors.toList());
    
        if (result.size() != 1) {
            throw new IllegalStateException(
                "Se esperaba exactamente un objeto EventoAvaliacaoDTO, pero se obtuvieron " + result.size());
        }
    
        return result.get(0);
    }
    

    Esta implementación utiliza flatMap para aplanar los mapas anidados en un flujo de EventoAvaliacaoDTO's. Después, estos se recolectan en una lista y se devuelve el primer elemento, lanzando una excepción si hay más de uno.

    Ten en cuenta que la implementación asume que solo hay un objeto EventoAvaliacaoDTO en el mapa de entrada. Si puede haber varios, deberás modificar la implementación en consecuencia.

Comments are closed.