l'ajout de plusieurs entrées d'une table de hachage à la fois en une seule instruction
J'ai besoin d'initialiser une constante HashMap et aimerais le faire en une seule ligne d'instruction. Éviter qqch comme ceci:
hashMap.put("One", new Integer(1)); //adding value into HashMap
hashMap.put("Two", new Integer(2));
hashMap.put("Three", new Integer(3));
semblable à cela dans l'objectif C:
[NSDictionary dictionaryWithObjectsAndKeys:
@"w",[NSNumber numberWithInt:1],
@"K",[NSNumber numberWithInt:2],
@"e",[NSNumber numberWithInt:4],
@"z",[NSNumber numberWithInt:5],
@"l",[NSNumber numberWithInt:6],
nil]
Je n'ai pas trouvé un exemple qui montre comment faire cela après avoir regardé de nombreux.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez faire ceci:
Vous pouvez utiliser Google Goyave est ImmutableMap. Cela fonctionne tant que vous n'avez pas de soins sur la modification de la Carte plus tard (vous ne pouvez pas appeler .put() sur la carte, après la construction à l'aide de cette méthode):
Voir aussi: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ImmutableMap.html
Un peu liés à la question: ImmutableMap.de() solution de contournement pour HashMap dans les Cartes?
ImmutableMap
n'accepte pasnull
clés ou des valeurs.Depuis Java 9, il est possible d'utiliser
Carte.de(...)
, comme suit:Cette carte est immuable. Si vous voulez la carte pour être mutables, vous devez ajouter:
Si vous ne pouvez pas utiliser Java 9, vous êtes coincé avec l'écriture d'une semblable méthode d'assistance vous-même ou à l'aide d'une bibliothèque tierce (comme Goyave) pour ajouter cette fonctionnalité pour vous.
Java n'a pas de carte littérale, donc il n'y a pas de bonne façon de faire exactement ce que vous demandez.
Si vous avez besoin de ce type de syntaxe, de considérer certains Groovy, qui est compatible Java et vous permet de faire:
Cartes ont également eu de l'usine méthodes ajoutée dans Java 9. Jusqu'à 10 entrées, les Cartes ont surchargé les constructeurs qui prennent des paires de clés et de valeurs. On pourrait par exemple construire une carte de diverses villes et de leurs populations (selon google en octobre 2016) comme suit:
Le var-args cas de la Carte est un peu plus difficile, vous avez besoin d'avoir à la fois des clés et des valeurs, mais en Java, les méthodes ne peut pas avoir deux var-args paramètres. De sorte que le cas général est traité par la prise d'un var-les arguments de la méthode de
Map.Entry<K, V>
objets et l'ajout d'une statiqueentry()
méthode qui construit eux. Par exemple:La collecte de l'Usine de Méthodes en Java 9
Voici une classe simple qui nous permettra d'atteindre ce que vous voulez
Et puis de l'utiliser
Cela donne
{a:1, b:2}
Ignorant la déclaration de
x
(ce qui est nécessaire pour éviter une "inaccessible déclaration" diagnostic), techniquement, c'est une seule instruction.Vous pouvez ajouter cette fonction d'utilité d'une classe utilitaire:
Remarque: dans
Java 9
vous pouvez utiliser Carte.deUne autre approche peut être l'écriture de la fonction spéciale d'extraire tous les éléments de valeurs à partir d'une seule chaîne à l'expression régulière: