2013-04-17 2 views
0

Je suis nouveau à Java et j'ai un problème que je ne peux pas comprendre comment résoudre. Je dispose d'un HashMap existant qui ressemble à ceci:Comment créer des hashmaps imbriqués de types mixtes?

[ 
{ 
    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 
} 
] 

J'ai besoin de transformer cette HashMap en quelque chose qui me permettra de le faire dans Mustache:

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

Je ne pense pas avoir suffisamment de connaissances sur les types de données existants qui permettent l'imbrication de cette nature. J'ai essayé avec HashMap, Set et Tree mais ça ne se présente pas. Je pense quel type je finis à l'aide des besoins de me laisser faire quelque chose comme ceci:

[ 
    { 
     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 
      } 
     } 
    } 
] 

Mais je peux me tromper et plus compliquer l'objet.

Tous les pointeurs seraient très appréciés.

+0

Vous avez une carte qui combine trois éléments dans chaque entrée? Habituellement, la carte est la clé = structure de valeur, n'est-ce pas? – Vitaly

+0

Vous avez raison, bonne observation. L'objet est en fait une liste, créée comme ceci: 'Liste > linksList = new ArrayList >();' – Fernando

Répondre

1

Supposant votre créer une classe comme ça:

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

La structure que vous décrivez pourrait fait avec:

HashMap<String, List<Link>> 

ou en utilisant la bibliothèque de goyave:

ListMultimap<String, Link> 
Questions connexes