J'ai besoin de créer une carte qui a une clé de deux chaînes.
Par exemple, disons P>
key = Name & Target value = Permission(boolean)
4 Réponses :
Est-ce ce que vous cherchez? Vous pouvez également créer un objet qui détient deux chaînes et remplacer le hashcode code> et
est égal à code> routines pour différencier de manière meilleure que simple Concaténation de chaîne. p> p>
Cela peut ne pas être la meilleure solution, Nom = 'AB' et Target = 'C' pointeront sur la même entrée que NAME = 'A' et Target = 'BC'. Pas parfaite solution mais ces chaînes peuvent être séparées par une chaîne inhabituelle.
Pourquoi ne créez pas une liste code> à partir de ces deux chaînes et utilisez comme clé dans
mappe code>. Cela garderait le code plus lisible aussi. P>
Veuillez poster un exemple de travail pour une solution suggérée, cela peut être pratique pour une référence supplémentaire
Vous pouvez chat des cordes ensemble, mais ma préférence personnelle consiste à créer un objet de valeur peu de valeur:
public class NameTarget { private final String name; private final String target; public NameTarget(String name, String target){ this.name = name; this.target = target; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); result = prime * result + ((target == null) ? 0 : target.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; NameTarget other = (NameTarget) obj; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (target == null) { if (other.target != null) return false; } else if (!target.equals(other.target)) return false; return true; } // add getters here }
Peut confirmer les 30 secondes - vous écrivez manuellement un nom d'emballage, un nom de classe et les deux attributs, le reste est autogogenée Soyez Eclipse (constructeur, getter, setter, implémentations pour HashCode, Tostring et Equals)
Il ne s'agit pas de la rapidité, mais de la lisibilité. Multikey, paire ou juste une liste ne dit rien sur ce que la clé représente réellement. Et si vous devez utiliser ces deux chaînes comme une clé, ils ont probablement une signification fonctionnelle. Dans certains cas rares, il est même utile d'envelopper une seule valeur dans une valeur de valeur uniquement pour le fait de représenter un sens.