【发布时间】:2018-05-30 06:20:24
【问题描述】:
我有一个数据列表,如下所示:
List<Data> data = new ArrayList<Data>();
data.add(new Data("d1", "option1"));
data.add(new Data("d2", "option1"));
data.add(new Data("d1", "option2"));
data.add(new Data("d3", "option1"));
data.add(new Data("d3", "option2"));
data.add(new Data("d3", "option3"));
结构如下:
class Data {
private String name;
private String option;
private List<String> options = new ArrayList<>();
public Data(String name, String option) {
this.name = name;
this.option = option;
}
public void addOption(String option) {
options.add(option);
}
}
如何根据名称及其选项将项目分组到一个新数组中,
[
"d1": {
"name": "d1",
"options": ["option1", "option2"]
},
"d2": {
"name": "d2",
"options": ["option1"]
},
"d3": {
"name": "d3",
"options": ["option1", "option2", "option3"]
}
]
【问题讨论】:
-
澄清一下:您希望输出为 JSON 字符串吗?或者有一种方法可以在
Data的新实例的options字段中获取所有option字段?对于后者,我已经建议更改一些内容,因为如果它们的含义基本相同,那么在您的类中同时拥有选项列表和单个 String 选项是很奇怪的。 -
不能实例化
List;这是一个界面。为什么Data有一个option和一个options列表?你永远不会打电话给addOption。此外,您不能将它们分组到一个数组中。你的意思是Map? -
没有 JSON,为了简洁,我给出了这样的对象结构。
标签: java collections java-8 java-stream