adding multiple entries to a HashMap at once in one statement adding multiple entries to a HashMap at once in one statement android android

adding multiple entries to a HashMap at once in one statement


You can use the Double Brace Initialization as shown below:

Map<String, Integer> hashMap = new HashMap<String, Integer>(){{     put("One", 1);     put("Two", 2);     put("Three", 3);}};

As a piece of warning, please refer to the thread Efficiency of Java “Double Brace Initialization" for the performance implications that it might have.


You can use Google Guava's ImmutableMap. This works as long as you don't care about modifying the Map later (you can't call .put() on the map after constructing it using this method):

import com.google.common.collect.ImmutableMap;// For up to five entries, use .of()Map<String, Integer> littleMap = ImmutableMap.of(    "One", Integer.valueOf(1),    "Two", Integer.valueOf(2),    "Three", Integer.valueOf(3));// For more than five entries, use .builder()Map<String, Integer> bigMap = ImmutableMap.<String, Integer>builder()    .put("One", Integer.valueOf(1))    .put("Two", Integer.valueOf(2))    .put("Three", Integer.valueOf(3))    .put("Four", Integer.valueOf(4))    .put("Five", Integer.valueOf(5))    .put("Six", Integer.valueOf(6))    .build();

See also: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ImmutableMap.html

A somewhat related question: ImmutableMap.of() workaround for HashMap in Maps?


Since Java 9, it is possible to use Map.of(...), like so:

Map<String, Integer> immutableMap = Map.of("One", 1,                                            "Two", 2,                                            "Three", 3);

This map is immutable. If you want the map to be mutable, you have to add:

Map<String, Integer> hashMap = new HashMap<>(immutableMap);

If you can't use Java 9, you're stuck with writing a similar helper method yourself or using a third-party library (like Guava) to add that functionality for you.