2010-12-15 75 views

Répondre

7

Le Je pense que moyen le plus simple:

Map<Key, List<Value>> 

Si vous préférez avoir juste un tuple (paire, 3, ou ...) vous pouvez créer une classe Pair.

class Pair<E,F, ...> { 

    public E one; 
    public F two; 
    ... 

} 

Et puis utilisez un Map comme ceci:

Map<Key, Pair<Value, Value>> 
+0

ok, je pensais qu'il y avait une autre solution. Depuis que je suis nouveau à Java, j'ai pensé qu'il pourrait y avoir une structure de données qui supporte cela. – ptikobj

+0

@pitik, je ne crois pas qu'il existe une structure de données native qui supporte cela. Je n'en ai jamais utilisé un. – jjnguy

+0

Je recommanderais de créer une classe, en utilisant des types génériques à l'intérieur des types génériques provoque des problèmes. –

1

Juste stocker un tableau comme la valeur avec la longueur définie?

2

Que diriez-vous HashTable<Key, List<Value>>?

1

Créez une nouvelle classe (non publique) pour vos valeurs ou utilisez plusieurs cartes (propably plus lentement).

0

Il n'y a pas une telle chose comme tuples en langage Java, donc vous pouvez utiliser quelques-unes des propositions:

  • magasin un tableau
  • stocker une liste, Set
  • magasin un objet personnalisé tenant les deux valeurs

Vous pouvez également créer un objet assez général: Pair.

public Pair<A,B> { 
    public Pair(A a, B b) { 
    this.a = a; 
    this.b = b; 
    } 
    public A a() { return a; } 
    public B b() { return b; } 
} 
1

La goyave de Google fournit un multimap qui fait cela. Javadoc

+0

merci, plus pratique que d'écrire votre propre classe. et exactement ce que je cherchais. – ptikobj