DTO列表映射/流

时间:2020-07-01 00:21:56

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

这可能是一个简单的问题,但我无法获得最佳解决方案。我的方法如下所示:

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<LayerDto>,因此最后一部分当然不起作用。使用Set可以像超级按钮一样工作,但是我这里需要List。那么,List最简单的方法是怎么做?

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

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

1 个答案:

答案 0 :(得分:1)

以下行返回一个列表:

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

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