使用流的嵌套对象转换 API Java 8
Nested Object Transformation using Stream API Java 8
我有一个像这样的 Class 来存储来自 REST-API 调用的 API 响应
class DataSet {
public String ID;
List<DataPoint> dataPoints;
}
class DataPoint{
DateTime timeStamp;
Double value;
}
我有一个 DataSet 的 ArrayList,需要转换成这样的东西
[{x: timestamp1, y: value1}, {x: timestamp2, y: value2},... {x: timestampn, y: valuen}]
对于 ArrayList 中的每个元素。
我正在学习 Java 8 的 Stream API,并希望使用它来完成。
想知道如何使用 Stream API java 8.
的 lambda 表达式得到输出
目前正在通过使用 for-each 的传统方式实现所需的输出,即:
List<ArrayList<Map<String, Object>>> transformedObject = new List<ArrayList<Map<String, Object>>>();
for(DataSet m : apiResponseArray){
ArrayList<Map<String, Object>> dataobj = new ArrayList<Map<String, Object>>();
List<DataPoint> listData =m.getdataPoints();
for(DataPoint d : listData)
{
Map<String, Object> dataMap = new LinkedHashMap<String, Object>();
dataMap.put("x", d.getTime(););
dataMap.put("y", d.getValue());
dataobj.add(dataMap);
}
transformedObject.add(dataobj);
}
Gson gson = new Gson();
return gson.toJson(transformedObject);
提前致谢!!!
内部流的一种可能方式(如果你真的想要地图列表的列表:))
private Map<String, Object> map(DataPoint dataPoint) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("x", dataPoint.timeStamp);
map.put("y", dataPoint.value);
return map;
}
List<List<Map<String, Object>>> transformedObject = dataSets.stream()
.map(
dataSet -> dataSet.dataPoints.stream()
.map(this::map)
.collect(Collectors.toList())
)
.collect(Collectors.toList());
我有一个像这样的 Class 来存储来自 REST-API 调用的 API 响应
class DataSet {
public String ID;
List<DataPoint> dataPoints;
}
class DataPoint{
DateTime timeStamp;
Double value;
}
我有一个 DataSet 的 ArrayList,需要转换成这样的东西
[{x: timestamp1, y: value1}, {x: timestamp2, y: value2},... {x: timestampn, y: valuen}]
对于 ArrayList 中的每个元素。
我正在学习 Java 8 的 Stream API,并希望使用它来完成。 想知道如何使用 Stream API java 8.
的 lambda 表达式得到输出目前正在通过使用 for-each 的传统方式实现所需的输出,即:
List<ArrayList<Map<String, Object>>> transformedObject = new List<ArrayList<Map<String, Object>>>();
for(DataSet m : apiResponseArray){
ArrayList<Map<String, Object>> dataobj = new ArrayList<Map<String, Object>>();
List<DataPoint> listData =m.getdataPoints();
for(DataPoint d : listData)
{
Map<String, Object> dataMap = new LinkedHashMap<String, Object>();
dataMap.put("x", d.getTime(););
dataMap.put("y", d.getValue());
dataobj.add(dataMap);
}
transformedObject.add(dataobj);
}
Gson gson = new Gson();
return gson.toJson(transformedObject);
提前致谢!!!
内部流的一种可能方式(如果你真的想要地图列表的列表:))
private Map<String, Object> map(DataPoint dataPoint) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("x", dataPoint.timeStamp);
map.put("y", dataPoint.value);
return map;
}
List<List<Map<String, Object>>> transformedObject = dataSets.stream()
.map(
dataSet -> dataSet.dataPoints.stream()
.map(this::map)
.collect(Collectors.toList())
)
.collect(Collectors.toList());