J'ai le code ci-dessous:
Map<String, Map<Double, String>> map = new HashMap<>();
Map<Double,String> Amap = new HashMap<>();
map.put(getValuesTypes.FUT(), HERE);
Au lieu de créer d'abord une carte et de la mettre à "ICI", je recherche une fonction que je pourrais utiliser avec un List
là Arrays.asList(...)
so que je peux simplement entrer à "Here" ?.asMap({1.0,"A"}, {2.0,"B"})
Vous pouvez initialiser HashMap
comme ceci.
new HashMap<Double, String>() {
{
put(1.0, "ValA");
put(2.0, "ValB");
}
};
Avec goyave
Map<Double, String> map = ImmutableMap.of(1.0, "A", 2.0, "B");
Guava's ImmutableMap.of (..) peut aider dans cette direction:
ImmutableMap.of(1, "a");
dans le JDK, il n'y a que Collections.singletonMap (..) , mais cela ne vous fournit qu'une carte avec une paire unique.
Il y avait un discussion dans projet goyave pour contenir une Maps.asMap(Object... varArgs)
, mais il a été arrêté. Donc, ImmutableMap.of (...) est la voie à suivre.
EDIT depuis le JDK 9
Dans la JDK 9, de nouvelles méthodes faisant la même chose ont été ajoutées: Map.of (K, V)
Il n'y a pas de littéral pour initialiser une carte de cette façon. Mais vous pouvez utiliser une classe anonyme générant sur place:
map.put(getValuesTypes.FUT(), new HashMap<Double, String>() {{
put(1.0, "A");
put(2.0, "B");
}});
bien que ce ne soit pas recommandé. Je suggérerais d'utiliser ImmutableMap
de Guava:
map.put(getValuesTypes.FUT(), ImmutableMap.<Double, String>of(1.0, "A", 2.0, "B"));
Si le nombre de paires est supérieur à 5
, vous devez utiliser leur builder
:
map.put(getValuesTypes.FUT(),
ImmutableMap.<Double, String>builder().put(1.0, "A")/* 5+ puts */.build());
Vous ne pouvez initialiser une nouvelle carte qu'en utilisant une classe anonyme. c'est à dire.
new HashMap<K, V>() {{
put(key, value);
put(key, value);
}};