如何使用Java 8流映射到多个元素?
我有一个这样的类:
class MultiDataPoint {
private DateTime timestamp;
private Map<String, Number> keyToData;
}
和我想为每个多数据点生成
class DataSet {
public String key;
List<DataPoint> dataPoints;
}
class DataPoint{
DateTime timeStamp;
Number data;
}
当然,一个“密钥”在多个多数据点上可以是相同的。
那么给定一个,我如何使用Java 8流转换为?List<MultiDataPoint>
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(), e.getValue()));
});
});
return setMap.values();
}