如何使用Java 8流将多个元素映射到?
如何使用Java 8流将多个元素映射到?
我有一个类如下所示:
class MultiDataPoint { private DateTime timestamp; private MapkeyToData; }
我想为每个MultiDataPoint生成下面这样的类:
class DataSet { public String key; ListdataPoints; } class DataPoint{ DateTime timeStamp; Number data; }
当然,一个'key'可以在多个MultiDataPoint中相同。
那么,给定一个List
,我如何使用Java 8的流将其转换为List
?
这是我目前不使用流进行转换的方法:
CollectionconvertMultiDataPointToDataSet(List multiDataPoints) { Map setMap = new HashMap<>(); multiDataPoints.forEach(pt -> { Map 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(); }