120 votes

constructeur pour HashMap

Guava nous fournit d'excellentes méthodes d'usine pour les types Java, telles que Maps.newHashMap() .

Mais existe-t-il également des constructeurs pour Java Maps ?

 HashMap<String,Integer> m = Maps.BuildHashMap.
    put("a",1).
    put("b",2).
    build();

177voto

Sean Patrick Floyd Points 109428

Il n'y a rien de tel pour HashMaps, mais vous pouvez créer un ImmutableMap avec un constructeur :

 final Map<String, Integer> m = ImmutableMap.<String, Integer>builder().
      put("a", 1).
      put("b", 2).
      build();

Et si vous avez besoin d'une carte mutable, vous pouvez simplement la transmettre au constructeur HashMap.

 final Map<String, Integer> m = Maps.newHashMap(
    ImmutableMap.<String, Integer>builder().
        put("a", 1).
        put("b", 2).
        build());

50voto

Johan Sjöberg Points 20759

Pas tout à fait un constructeur, mais en utilisant un initialiseur :

 Map<String, String> map = new HashMap<String, String>() {{
    put("a", "1");
    put("b", "2");
}};

38voto

Jake Toronto Points 355

Ceci est similaire à la réponse acceptée, mais un peu plus propre, à mon avis:

 ImmutableMap.of("key1", val1, "key2", val2, "key3", val3);

Il existe plusieurs variantes de la méthode ci-dessus, et elles sont idéales pour créer des cartes statiques, immuables et immuables.

12voto

culmat Points 136

En voici un très simple...

 public class FluentHashMap<K, V> extends java.util.HashMap<K, V> {
  public FluentHashMap<K, V> with(K key, V value) {
    put(key, value);
    return this;
  }

  public static <K, V> FluentHashMap<K, V> map(K key, V value) {
    return new FluentHashMap<K, V>().with(key, value);
  }
}

ensuite

 import static FluentHashMap.map;

HashMap<String, Integer> m = map("a", 1).with("b", 2);

Voir https://gist.github.com/culmat/a3bcc646fa4401641ac6eb01f3719065

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X