我想(使用 Java8 )将(JSON)数据列表转换为分层结构。
能否请您告诉我解决此问题的最佳方法是什么?
如何将阵列列表转换为多维图?
问题类似于转换此内容
{
"server": "Manufacturer Co.",
"vehicles": [
{
"year": 2018,
"model": "Ford Explorer (1)",
"category": "4WD"
},
{
"year": 2018,
"model": "Ford Explorer (2)",
"category": "4WD"
},
{
"year": 2017,
"model": "Ford Mustang (3)",
"category": "2WD"
}
{
"year": 2017,
"model": "Ford Mustang 4WD (4)",
"category": "4WD"
}
}
进入
vehicles
-- year 2018
----- category: 4WD
---------- Ford Explorer (1)
---------- Ford Explorer (2)
-- year 2017
----- category: 2WD
---------- Ford Mustang (3)
----- category: 4WD
---------- Ford Mustang (4)
感谢您的时间
答案 0 :(得分:4)
您应该使用多个groupingBy
,然后使用mapping
来收集要列出的模型属性。
我假设您有一个类似这样的模型:
public class Vehicle {
private int year;
private String model;
private String category;
//other
}
Map<Integer,Map<String,List<String>>> result = vehicles.stream()
.collect(Collectors.groupingBy(Vehicle::getYear,
Collectors.groupingBy(Vehicle::getCategory,
Collectors.mapping(Vehicle::getModel, Collectors.toList()))));
答案 1 :(得分:2)
有两种方法。第一个方法是创建一个Map
的键Year
和Map
的键Category
的{{1}}。遍历所有车辆,如果不存在则创建一年的条目,如果不存在则添加类别,如果不存在则添加模型。
更优雅的方法是使用内存数据库。创建具有列Model
,vehicles
和year
的表category
,然后使用以下查询它:
model