小编Mau*_*lin的帖子

如何使用Java 8流映射到多个元素?

我有一个这样的课:

class MultiDataPoint {
  private DateTime timestamp;
  private Map<String, Number> keyToData;
}
Run Code Online (Sandbox Code Playgroud)

我想为每个MultiDataPoint生成

class DataSet {
        public String key;    
        List<DataPoint> dataPoints;
}

class DataPoint{
  DateTime timeStamp;
  Number data;
}
Run Code Online (Sandbox Code Playgroud)

当然,在多个MultiDataPoints中,"key"可以是相同的.

所以给定一个List<MultiDataPoint>,我如何使用Java 8流转换为List<DataSet>

这就是我目前在没有流的情况下进行转换的方式:

Collection<DataSet> convertMultiDataPointToDataSet(List<MultiDataPoint> multiDataPoints)
{

    Map<String, DataSet> setMap = new HashMap<>();

    multiDataPoints.forEach(pt -> {
        Map<String, Number> data = pt.getData();
        data.entrySet().forEach(e -> {
            String seriesKey = e.getKey();
            DataSet dataSet = setMap.get(seriesKey);
            if (dataSet == null)
            {
                dataSet = new DataSet(seriesKey);
                setMap.put(seriesKey, dataSet);
            }
            dataSet.dataPoints.add(new DataPoint(pt.getTimestamp(), …
Run Code Online (Sandbox Code Playgroud)

java lambda closures java-8 java-stream

41
推荐指数
2
解决办法
8万
查看次数

标签 统计

closures ×1

java ×1

java-8 ×1

java-stream ×1

lambda ×1