【问题标题】:Convert Map<TipoQuestionario, Map<AvaliadorEventoDTO, List<EventoQuestaoDTO>>> to Object EventoAvaliacaoDTO [closed]将 Map<TipoQuestionario, Map<AvaliadorEventoDTO, List<EventoQuestaoDTO>>> 转换为对象 EventoAvaliacaoDTO [关闭]
【发布时间】:2021-11-29 22:25:09
【问题描述】:

我有一个Map&lt;TipoQuestionario, Map&lt;AvaliadorEventoDTO, List&lt;EventoQuestaoDTO&gt;&gt;&gt;,我想将其转换为一个对象 EventoAvaliacaoDTO。

我的对象:

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class EventoAvaliacaoDTO {

    private TipoQuestionario tipoQuestionario;
    private AvaliadorEventoDTO avaliadorEventoDTO;
    private List<EventoQuestaoDTO> eventoQuestoesDTO;
    
}

我该怎么做?

【问题讨论】:

  • “我有一个地图>,我想把它转换成一个对象。”好消息:它已经是一个了。
  • 对不起,对象 EventoAvaliacaoDTO
  • 如果您的意思是想要您展示的类的实例,那么您需要更加具体:这是您的类还是其他人的类?如果它是你自己的,为什么不为它创建一个构造函数呢?无论如何,什么规则告诉您应该如何确定 tipoQuestionario 等值?
  • 它已经有一个构造函数,我使用 lombock 来接收 @AllArgsConstructor 参数。但是我需要将值传递给构造函数,但是由于另一个 Map 中有一个 Map 我想知道如何做到这一点...
  • 好的,所以想法是您将使用映射中的键来填充tipoQuestionario,然后值(也是映射)将填充avaliadorEventoDTOeventoQuestoesDTO?好的,但是如果这些映射中的任何一个具有多个键值对怎么办?

标签: java lambda lombok


【解决方案1】:

假设您想将每个 TipoQuestionario, AvaliadorEventoDTO 组合展平为自己的对象,您可以执行以下操作:

Map<TipoQuestionario, Map<AvaliadorEventoDTO, List<EventoQuestaoDTO>>> map = ...
List<EventoAvaliacaoDTO> list = map.entrySet()
        .stream()
        .flatMap(e -> e.getValue()
                .entrySet()
                .stream()
                .map(e2 -> new EventoAvaliacaoDTO(e.getKey(), e2.getKey(), e2.getValue())))
        .collect(Collectors.toList());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2021-02-23
    • 2017-07-14
    • 1970-01-01
    • 2022-09-30
    相关资源
    最近更新 更多