开发者社区> 问答> 正文

如何使用Java 8流从List <TradeChartDTO>收集多个列表?

我有TradeChartDTO列表,我想从该列表中收集多个列表。我确实是这样。但是我想通过使用单个流来收集。我不想一次又一次地流式收集多个列表。

我做到了

private Map<String, Object> getJsonAccordingToChartApi(List<TradeChartDTO> tradeChartDTO) {
        List<BigDecimal> high = tradeChartDTO.stream().map(chart -> chart.getHigh()).collect(Collectors.toList());

        List<BigDecimal> low = tradeChartDTO.stream().map(chart -> chart.getLow()).collect(Collectors.toList());

        List<BigDecimal> close = tradeChartDTO.stream().map(chart -> new BigDecimal(chart.getClose())).collect(Collectors.toList());

        List<BigDecimal> open = tradeChartDTO.stream().map(chart -> new BigDecimal(chart.getOpen())).collect(Collectors.toList());

        List<BigDecimal> volume = tradeChartDTO.stream().map(chart -> chart.getVolume()).collect(Collectors.toList());

        List<BigDecimal> timestamp = tradeChartDTO.stream().map(chart -> new BigDecimal(chart.getTimestamp())).collect(Collectors.toList());
        Map<String, Object> mainData = new HashMap<>();
        mainData.put("t", timestamp);
        mainData.put("c", close);
        mainData.put("o", open);
        mainData.put("v", volume);
        mainData.put("h", high);
        mainData.put("l", low);
        return mainData;
    }

TradeChartDTO.java

@Getter
@Setter
@NoArgsConstructor
public class TradeChartDTO {

    private Integer timestamp;

    private BigDecimal volume;

    private String open;

    private BigDecimal high;

    private BigDecimal low;

    private String close;

    private BigDecimal price;
}

还有其他方法吗?

展开
收起
垚tutu 2019-11-28 19:24:31 922 0
0 条回答
写回答
取消 提交回答
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载