Java Initialize Map with Key Value Pairs in One Line
- Details
- Written by Nam Ha Minh
- Last Updated on 19 April 2024   |   Print Email
Map<Integer, String> map = new HashMap<>(); map.put(200, "OK"); map.put(201, "Created"); map.put(301, "Moved Permanently"); map.put(403, "Forbidden"); map.put(404, "Not Found"); map.put(500, "Internal Server Error");This is the trivial way to initialize a Map with some initial key-value pairs, using the Map’s put() method. However, this can be boilerplate and lengthy if there are more number of key-value pairs. There’s should be a better way, as described below.
1. Using Map.of() method
Since Java 9, you can use the following static method provided by the Map interface to initialize a Map with some fixed key-value pairs in just a single line:Map.of(key1, value1, key2, value2, …)
This method creates and returns an immutable object of type Map, which holds the given key-value pairs. You can initialize up to 10 pairs of key-value pairs. So the above code example can be rewritten as follows:Map<Integer, String> map = Map.of( 200, "OK", 201, "Created", 301, "Moved Permanently", 403, "Forbidden", 404, "Not Found", 500, "Internal Server Error" );You see, this way makes the code more succinct and readable, right? Also it’s easier and more convenient to write.
2. Return a mutable Map object
Note that the Map.of() method returns an immutable object of type Map, which means you can’t put new key-value pairs or remove existing ones. Attempt to do so will result in UnsupportedOperationException thrown at runtime.Map<Integer, String> map = new HashMap<>(Map.of( 200, "OK", 201, "Created", 301, "Moved Permanently", 403, "Forbidden", 404, "Not Found", 500, "Internal Server Error" ));Then you can put/remove key-value pairs to/from the map later, for example:
map.put(401, "Unauthorized"); map.remove(500);
Summary:
You have seen some code examples about how to initialize a Map object with some default key-value pairs in just one line, which is convenient and saves you time. Note that the Map.of() static method takes up to 10 pairs of key-value and it returns an immutable object of type Map. If you want to create a modifiable Map, you need to instantiate a new HashMap object that copies key-value pairs from the object created by Map.of() method.References:
Other Java Collections Tutorials:
- What is Java Collections Framework?
- Java Queue Tutorial
- Java List Tutorial
- Java Set Tutorial
- Java Map Tutorial
- Understand equals and hashCode
- Understand object ordering
- 18 Java Collections and Generics Best Practices
Comments