【发布时间】:2022-01-07 16:09:24
【问题描述】:
我正在对Map<AvaliadorEventoDTO, Map<TipoQuestionario, List<EventoQuestaoDTO>>> 中的对象列表进行分组,然后我正在遍历地图以创建一个包含已分组信息的新对象。
List<EventoQuestaoDTO> list = new ArrayList<EventoQuestaoDTO>(
eventoQuestaoService.buscarEventoQuestaoDTO(empresa, evento, idioma,
inscTipoTrabAval.getAvaliadorEvento().getId(), inscTipoTrabAval.getInscricaoTipoTrabalho().getId(), inscTipoTrabAval.getId()));
avaliacoes = new ArrayList<EventoAvaliacaoDTO>();
Map<AvaliadorEventoDTO, Map<TipoQuestionario, List<EventoQuestaoDTO>>> map = list.stream()
.collect(Collectors.groupingBy(EventoQuestaoDTO::getAvaliadorEvento, Collectors.groupingBy(EventoQuestaoDTO::getTipoQuestionario)));
for (Map.Entry<AvaliadorEventoDTO, Map<TipoQuestionario, List<EventoQuestaoDTO>>> avaliador : map.entrySet()) {
List<QuestionarioDTO> questionarios = new ArrayList<QuestionarioDTO>();
for(Map.Entry<TipoQuestionario, List<EventoQuestaoDTO>> questionario : avaliador.getValue().entrySet()) {
questionarios.add(new QuestionarioDTO(questionario.getKey(), questionario.getValue()));
}
avaliacoes.add(new EventoAvaliacaoDTO(avaliador.getKey(), questionarios));
}
但我想优化 for in lambdas 表达式,将 Map 转换为 DTO QuestionarioDTO 列表,而不需要使用 for 并因此使用更少的行。
谁能给个灯?
【问题讨论】:
标签: java lambda java-stream