gpt4 book ai didi

java - 将树状映射转换为具有复合键的普通映射

转载 作者:行者123 更新时间:2023-11-30 08:14:11 25 4
gpt4 key购买 nike

我试图用Java做一些事情,但我陷入了这个问题,我真的不知道如何转换它。我尝试过 for 循环,但我需要进行大量 for 循环,并且我想保持代码干净。

我有一个看起来像这样的 map 。

Map 1:
A: Object
B: Object
C: Map 2
D: Object
E: Object
F: Map 3
G: Object
(Here could be another map that could go really far, etc)
H: Map 4
I: Object
J: Object
(Here could also be more)\
K: Object
(Here could also be more)

请注意,这只是一个示例, map 、键等的数量可能不同,键名称也可能不同。键名称不能包含点。

C、F和H是 map ,其中 map C包含D、E、F、H、K, map F包含G等。

如何将其转换为一张如下所示的 map :

A: Object
B: Object
C.D: Object
C.E: Object
C.K: Object
C.F.G: Object
C.H.I: Object
C.H.J: Object

按键的顺序并不重要。

最佳答案

像这样:

public Map<String, Object> convert (Map<String, Object> input, String key) {
Map<String, Object> res = new HashMap<>();

for (Entry<String, Object> e : input.entrySet()) {
String newKey = key == "" ? e.getKey() : (key + "." + e.getKey());

if (e.getValue() instanceof Map) {
res.putAll(convert((Map) e.getValue(), newKey)); // recursive call
} else {
res.put(newKey, e.getValue());
}
}
return res;
}

现在您在输入 map 上调用它:

Map<String, Object> converted = convert(input, "");

关于java - 将树状映射转换为具有复合键的普通映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29893161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com