Initializing a Java HashMap with specific key-value pairs in a concise and literal manner has been an elusive feature for developers. However, advancements in Java have paved the way for simplified map creation.
From Java version 9 onwards, the Map class introduces factory methods that streamline map creation:
Map.of: Can create maps with up to 10 elements using a concise syntax:
Map<String, String> test1 = Map.of("a", "b", "c", "d");
Map.ofEntries: Creates maps with any number of elements:
import static java.util.Map.entry; Map<String, String> test2 = Map.ofEntries( entry("a", "b"), entry("c", "d") );
However, it's important to note that these methods result in immutable maps. For mutable maps, you can create a copy using:
mutableMap = new HashMap<>(Map.of("a", "b"));
Prior to Java 9, direct literal initialization was not supported. To achieve a similar effect, you can employ the following techniques:
Anonymous Class with Initializer: Define an anonymous subclass that initializes the map in its constructor:
Map<String, String> myMap = new HashMap<String, String>() {{ put("a", "b"); put("c", "d"); }};
Function for Initialization: Create a function to generate a map and use it in the initializer:
Map<String, String> myMap = createMap(); private static Map<String,String> createMap() { Map<String,String> myMap = new HashMap<String,String>(); myMap.put("a", "b"); myMap.put("c", "d"); return myMap; }
The latter approach is cleaner and avoids any potential pitfalls associated with anonymous subclasses.
The above is the detailed content of How Can I Initialize a HashMap in Java Efficiently?. For more information, please follow other related articles on the PHP Chinese website!