获取地图的最后一个条目集

时间:2011-12-05 03:54:06

标签: java map hashmap

我需要获取地图的最后一个条目集 但我的地图有这个参数:

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>>

非常感谢任何帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

如果使用递归数据结构,则需要递归算法。

做一个简单的递归函数,一旦map.get(key)的类型不是一个你知道你到达树底部的hashmap。

但是,正如有人所说(Knuth?) - 不设计算法,设计数据结构。对你来说,看起来树修改可以完成一项工作。然后,您可以应用先到先搜索并查找所有叶节点。事实上,这个哈希映射的哈希映射的哈希映射实际上是一个树,但是因为你没有使用HashMap / Value之上的任何接口,你被迫在对象上使用强制转换(它仍然没关系,它只是不对'OOP方式做事)。

你可以自己在维基百科上找到很多样本树结构/算法(甚至在java中),所以我不会在这里插入链接。

如果您需要有关初始代码的任何帮助,请与我们联系。

干杯