我需要获取地图的最后一个条目集 但我的地图有这个参数:
HashMap<Integer, HashMap<String, HashMap<Integer, Object>>> map = new HashMap<Integer, HashMap<String,HashMap<Integer,Object>>>();
举一个例子:
如果我有一张具有这种价值的地图:
{1=
ANIMALS=
{1=
{1=
{field1=dog,field2=cat},
1=
{1=
{1=
{field1=bird,field2=horse}},
2=
{1=
{field1=snake,field2=cow}}}}
我正在考虑使用instanceOf
,但我对此并不熟悉。
每张地图都可以包含另一张地图这就是我使用Object
的原因。
如何获取Object
的最后一个输入集?
我的输出应该是:
{1=
{field1=dog,field2=cat},
{2=
{field1=bird,field2=horse},
{3=
{field1=snake,field2=cow}
最后一张地图将是
HashMap<Integer,HashMap<String,String>>
非常感谢任何帮助。
谢谢
答案 0 :(得分:1)
如果使用递归数据结构,则需要递归算法。
做一个简单的递归函数,一旦map.get(key)的类型不是一个你知道你到达树底部的hashmap。
但是,正如有人所说(Knuth?) - 不设计算法,设计数据结构。对你来说,看起来树修改可以完成一项工作。然后,您可以应用先到先搜索并查找所有叶节点。事实上,这个哈希映射的哈希映射的哈希映射实际上是一个树,但是因为你没有使用HashMap / Value之上的任何接口,你被迫在对象上使用强制转换(它仍然没关系,它只是不对'OOP方式做事)。
你可以自己在维基百科上找到很多样本树结构/算法(甚至在java中),所以我不会在这里插入链接。
如果您需要有关初始代码的任何帮助,请与我们联系。
干杯