在 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.valueZoneIds.name。那么,我该怎么做呢?

可能有以下选项:

  • "ZoneIds" 是列表的列表,namevalue 按索引
  • 正确排序
{"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);