试试这个。
@SuppressWarnings("unchecked")
static Map<String, Object> convert(List<String> list, Map<String, Integer> map) {
Map<String, Object> result = new TreeMap<>();
for (String s : list) {
String[] f = s.split("\\.");
Map<String, Object> t = result;
int i = 0;
for (int m = f.length - 1; i < m; ++i)
t = (Map<String, Object>)t.computeIfAbsent(
f[i], k -> new TreeMap<>());
t.put(f[i], map.get(f[i]));
}
return result;
}
public static void main(String[] args) {
List<String> list = List.of(
"a.b.cc",
"a.dd",
"a.b.f.gg",
"u.ww");
Map<String, Integer> map = Map.of(
"cc", 1, "dd", 5, "gg", 8, "ww", 60);
Map<String, Object> result = convert(list, map);
System.out.println(result);
}
输出:
{a={b={cc=1, f={gg=8}}, dd=5}, u={ww=60}}