【问题标题】:Group List to List DTO using Java 8使用 Java 8 将列表分组到列表 DTO
【发布时间】:2021-11-21 21:21:45
【问题描述】:

我想使用 JAVA 8 将 DTO 中的 InscricaoTipoTrabalhoAvaliador 列表按相等的 AvaliadorEvento 分组。有人可以帮忙吗?

银行查询返回 4 行,其中 ID 10 和 ID 13 具有相同的AvaliadorEventoId,我想将它们分组在 DTO 中:

InscricaoTipoTrabalhoAvaliador

@Entity
@Table(name = "inscricao_tipo_trab_aval")
@Getter
@Setter
public class InscricaoTipoTrabalhoAvaliador implements Entidade{
  
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @ManyToOne(fetch=FetchType.LAZY)
  @JoinColumn(name="inscricao_tipo_trabalho_id")
  private InscricaoTipoTrabalho inscricaoTipoTrabalho;
    
  @OneToOne(fetch = FetchType.LAZY)
  @JoinColumn(name = "avaliador_evento_id")
  private AvaliadorEvento avaliadorEvento;
    
  @Enumerated(EnumType.STRING)
  @Column(name = "situacao_avaliador")
  private SituacaoTrabalho situacaoTrabalho;

  @Transient
  private List<InscricaoTipoTrabalho> inscricaoTipoTrabalhos = new ArrayList<InscricaoTipoTrabalho>();
    
  public InscricaoTipoTrabalhoAvaliador() {
    super();    
  }
}

InscricaoTipoTrabalhoAvaliadorDTO

@Getter
@Setter
@AllArgsConstructor
public class InscricaoTipoTrabalhoAvaliadorDTO {

  private AvaliadorEvento avaliadorEvento;
  
  private List<InscricaoTipoTrabalhoAvaliador> trabalhos;
  
}

【问题讨论】:

    标签: java lambda


    【解决方案1】:

    假设List&lt;InscricaoTipoTrabalhoAvaliador&gt; jobs,以下应该可以工作:

    Map<AvaliadorEvento, List<InscricaoTipoTrabalhoAvaliador>> grouped =
      jobs.stream().collect(Collectors.groupingBy(InscricaoTipoTrabalhoAvaliador::getAvaliadorEvento));
    

    使用此地图,您可以轻松地创建您的InscricaoTipoTrabalhoAvaliadorDTO,假设您有一个同时采用AvaliadorEventoList&lt;InscricaoTipoTrabalhoAvaliador&gt; 的构造函数:

    List<InscricaoTipoTrabalhoAvaliadorDTO> dtos = grouped.entrySet().stream()
      .map(entry -> new InscricaoTipoTrabalhoAvaliadorDTO(entry.getKey(), entry.getValue()))
      .collect(Collectors.toList());
    

    【讨论】:

    • 非常好!谢谢兄弟
    猜你喜欢
    • 2021-08-13
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多