我使用以下地圖進行列舉并添加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
}
但是,我想在同一個物件中傳遞另一個串列,然后在前端以ZoneIds.valueand檢索這兩個傳遞的值ZoneIds.name。那么,我該怎么做呢?
uj5u.com熱心網友回復:
以下選項是可能的:
"ZoneIds"是串列的串列,name并value通過指數正常有序
{"ZoneIds": [["name1", "value1"], ["nameN", "valueN"]]}
然后,假設由gmtNames()和回傳的串列的大小gmtValues()相等,則名稱/值會像這樣連接:
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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/373229.html
