在 Java 中向对象添加多个元素
Add multiple elements to Object in Java
我将以下映射用于枚举并添加一个 enum
,如下所示:
final Map<String, Object> enums = new HashMap<>();
enums.put("ZoneIds", gmtValues());
ZoneIds
枚举有一个从此方法返回的 List<String>
:
private static List<String> gmtValues() {
return ... // code omitted for brevity
}
private static List<String> gmtNames() {
return ... // code omitted for brevity
}
但是,我想在同一个对象中传递另一个列表,然后在前端检索这 2 个传递的值作为 ZoneIds.value
和 ZoneIds.name
。那么,我该怎么做呢?
可能有以下选项:
"ZoneIds"
是列表的列表,name
和 value
按索引 正确排序
{"ZoneIds": [["name1", "value1"], ["nameN", "valueN"]]}
假设 gmtNames()
和 gmtValues()
返回的列表大小相等,然后 names/values 像这样连接:
List<String> names = gmtNames();
List<String> values = gmtValues();
List<List<String>> nameValueList = IntStream.range(0, Math.min(names.size(), values.size()))
.mapToObj(i -> Arrays.asList(names.get(i), values.get(i)))
.collect(Collectors.toList());
enums.put("ZoneIds", nameValueList);
"ZoneIds"
是地图列表:
{"ZoneIds": [{"name":"name1", "value":"value1"}, {"name":"nameN", "value":"valueN"}]}
List<Map<String, String>> listMaps = IntStream.range(0, Math.min(names.size(), values.size()))
.mapToObj(i -> Map.of("name", names.get(i), "value", values.get(i)))
.collect(Collectors.toList());
enums.put("ZoneIds", listMaps);
- 简单地图,密钥取自
gmtNames()
列表:
{"ZoneIds": {"name1":"value1", "nameN":"valueN"}}
Map<String, String> nameValueMap = IntStream.range(0, Math.min(names.size(), values.size()))
.boxed()
.collect(Collectors.toMap(
names::get, // key from names list
values::get, // value from values list
(v1, v2) -> v1, // merge function in case of conflicts
LinkedHashMap::new // keep insertion order
));
enums.put("ZoneIds", nameValueMap);
我将以下映射用于枚举并添加一个 enum
,如下所示:
final Map<String, Object> enums = new HashMap<>();
enums.put("ZoneIds", gmtValues());
ZoneIds
枚举有一个从此方法返回的 List<String>
:
private static List<String> gmtValues() {
return ... // code omitted for brevity
}
private static List<String> gmtNames() {
return ... // code omitted for brevity
}
但是,我想在同一个对象中传递另一个列表,然后在前端检索这 2 个传递的值作为 ZoneIds.value
和 ZoneIds.name
。那么,我该怎么做呢?
可能有以下选项:
"ZoneIds"
是列表的列表,name
和value
按索引 正确排序
{"ZoneIds": [["name1", "value1"], ["nameN", "valueN"]]}
假设 gmtNames()
和 gmtValues()
返回的列表大小相等,然后 names/values 像这样连接:
List<String> names = gmtNames();
List<String> values = gmtValues();
List<List<String>> nameValueList = IntStream.range(0, Math.min(names.size(), values.size()))
.mapToObj(i -> Arrays.asList(names.get(i), values.get(i)))
.collect(Collectors.toList());
enums.put("ZoneIds", nameValueList);
"ZoneIds"
是地图列表:
{"ZoneIds": [{"name":"name1", "value":"value1"}, {"name":"nameN", "value":"valueN"}]}
List<Map<String, String>> listMaps = IntStream.range(0, Math.min(names.size(), values.size()))
.mapToObj(i -> Map.of("name", names.get(i), "value", values.get(i)))
.collect(Collectors.toList());
enums.put("ZoneIds", listMaps);
- 简单地图,密钥取自
gmtNames()
列表:
{"ZoneIds": {"name1":"value1", "nameN":"valueN"}}
Map<String, String> nameValueMap = IntStream.range(0, Math.min(names.size(), values.size()))
.boxed()
.collect(Collectors.toMap(
names::get, // key from names list
values::get, // value from values list
(v1, v2) -> v1, // merge function in case of conflicts
LinkedHashMap::new // keep insertion order
));
enums.put("ZoneIds", nameValueMap);