【问题标题】:DTO List Mapping / StreamingDTO 列表映射/流式传输
【发布时间】:2020-07-01 00:21:56
【问题描述】:

这可能是一个简单的问题,但我不会得到最好的解决方案。我的方法如下所示:

public static MlpConfigDto toMlpConfigDto(MlpConfig mlpConfig) {
    return new MlpConfigDto().setActivationFunction(mlpConfig.getActivationFunction().getType().name())
            .setBatchSize(mlpConfig.getBatchSize()).setDescription(mlpConfig.getDescription())
            .setEpochNumber(mlpConfig.getEpochNumber()).setId(mlpConfig.getId())
            .setLastUpdated(mlpConfig.getLastUpdated())
            .setLayers(new List<LayerDto>(
                    mlpConfig.getLayers().stream().map(layer -> new ModelMapper().map(layer, LayerDto.class)))
                            .collect(Collectors.toList()));
}

最后一部分当然不起作用,因为 Java 中没有 new List&lt;LayerDto&gt;。使用Set 这就像一个魅力,但我需要一个List 这里。那么如何为Lists 做最简单的方法呢?

对于Sets,它看起来像这样:

.setLayers(new HashSet<LayerDto>(
    mlpConfig.getLayers().stream().map(layer -> new ModelMapper().map(layer, LayerDto.class)))
            .collect(Collectors.toSet()));
}

【问题讨论】:

  • 嗯,这可以编译吗?看起来你是在 Set 上调用 collect,还是我读错了?
  • 你的意思是new ArrayList&lt;LayerDto&gt;而不是界面吗?是的,当它已经收集到相同的类型时,你不需要包装。

标签: java arraylist java-8 set java-stream


【解决方案1】:

以下行返回一个列表:

mlpConfig.getLayers()
    .stream()
    .map(layer -> new ModelMapper().map(layer, LayerDto.class))
    .collect(Collectors.toList())

无需将其包装到另一个集合中。

【讨论】:

  • @CptDayDreamer 没问题,祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-06
  • 2012-11-23
  • 2013-11-13
  • 2017-09-22
相关资源
最近更新 更多