【发布时间】:2025-12-03 06:25:02
【问题描述】:
我有一个嵌套的HashMap 这种形式:
{key1=val1, key2=val2,
key3=[
{key4=val4, key5=val5},
{key6=val6, key7=val7}
]
}
我现在想要展平该地图,以便所有条目都处于同一级别:
{key1=val1, key2=val2, key4=val4, key5=val5,key6=val6, key7=val7}
当我尝试时
map.values().forEach(map.get("key3")::addAll);
作为described in this post,我收到以下错误:
invalid method reference
cannot find symbol
symbol: method addAll(T)
location: class Object
where T is a type-variable:
T extends Object declared in interface Iterable
是否有任何通用方法来展平任何给定的Map?
【问题讨论】:
-
一个带有
instanceOf检查Map的递归函数,我假设 -
你可以尝试使用 Java Stream API 中的 flatMap()
-
map.get("key3")::addAll没有意义,因为您似乎有一个Map<String, Object>。 -
如果您能分享您所分享的代码工作的
Map的类型,我将非常高兴。 -
那么你的
Map是什么类型的?如果某些条目是Entry<String, Map<String, String>>,则不能是Map<String, String>。您需要包含代码以便我们了解您实际拥有的内容。
标签: java dictionary hash java-8 flatten