如何创建混合类型的嵌套哈希映射?

时间:2013-04-17 21:01:43

标签: java tree hashmap mustache

我是Java的新手,我有一个问题,我无法弄清楚如何解决。 我有一个现有的HashMap,如下所示:

[
{
    linkText=Link Text, 
    link=http://www.someurl.com, 
    heading=Asia}, 
{
    linkText=Link Text, 
    link=http://www.someurl.com, 
    heading=Asia
}
{
    linkText=Link Text, 
    link=http://www.someurl.com, 
    heading=Europe
}
{
    linkText=Link Text, 
    link=http://www.someurl.com, 
    heading=Africa
}
]

我需要将这个HashMap转换为允许我在Mustache中执行此操作的内容:

<ul>
{{#linkGroups}}
<li>{{heading}}
  <ul>
    {{#links}}
    <li><a href="{{link}}">{{linkText}}</a></li>
    {{/links}}
  </ul>
</li>
{{/linkGroups}}
</ul>

我认为我对现有数据类型没有足够的了解,这些数据类型允许嵌套这种性质。我已经尝试过使用HashMap,Set和Tree但它没有出现。我认为我最终使用的任何类型需要让我做这样的事情:

[
    {
        heading=Asia,
        links= {
            {
                linkText=Link Text,
                link=http://www.someurl.com
            }
            {
                linkText=Link Text,
                link=http://www.someurl.com
            }
        }
    }
    {
        heading=Europe,
        links= {
            {
                linkText=Link Text,
                link=http://www.someurl.com
            }
            {
                linkText=Link Text,
                link=http://www.someurl.com
            }
        }
    }
]

但我可能错了,并使对象复杂化。

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:1)

假设你创建了一个这样的类:

class Link
{
    public String text;
    public String url;
}

您所描述的结构可以用:

HashMap<String, List<Link>>

或使用guava库:

ListMultimap<String, Link>