使用点分隔符将 List 转换为 String 到 Map<String, Object>
Posted
技术标签:
【中文标题】使用点分隔符将 List 转换为 String 到 Map<String, Object>【英文标题】:convert List ot String with point separator to Map<String, Object> 【发布时间】:2021-12-30 11:11:41 【问题描述】:在 Java 上寻找一个漂亮的解决方案,这对我会有帮助。提前感谢您的任何建议。 有逗号分隔符的字符串列表:
"a.b.cc"
"a.dd"
"a.b.f.gg"
"u.ww"
我有每行最后一个元素的值
cc -> 1, dd -> 5, gg -> 8, ww ->60
因此我应该有 Map
这个结果我可以用 json 来描述:"a":"b":"cc":1,"f":"gg":8"dd":5"u":60
所以任务是将带有分隔符的字符串转换为带有预定义值的映射。
【问题讨论】:
【参考方案1】:试试这个。
@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
【讨论】:
谢谢!为我工作非常非常好。以上是关于使用点分隔符将 List 转换为 String 到 Map<String, Object>的主要内容,如果未能解决你的问题,请参考以下文章
通过 http 管道将逗号分隔的值转换为 list<string>