In the Java programming language, a hashmap is a list of associated values. A hashmap is used in Java to store data, and if you’re storing a lot of data in a structured way, it’s useful to know the various ways you can retrieve that data when you need it.
Creating a hashmap
You create a hashmap in Java by importing and using the `HashMap` class. When you create a hashmap, you must define what constitutes a valid value (such as `Integer` or `String`). A hashmap holds pairs of values.
package com.opensource.example;
import java.util.HashMap;
public class Mapping {
public static void main(String[] args) {
HashMap<String, String> myMap = new HashMap<>();
myMap.put("foo", "hello");
myMap.put("bar", "world");
System.out.println(myMap.get("foo") + " " + myMap.get("bar"));
System.out.println(myMap.get("hello") + " " + myMap.get("world"));
}
}
The `put` method allows you to add data to your hashmap, and the `get` method retrieves data from the hashmap.
Run the code to see the output. Assuming you’ve saved the code in a file called `main.java`, you can run it directly with the `java` command:
$ java ./main.java
hello world
null null
Calling the second values in the hashmap returns `null`, so the first value is essentially a key and the second a value. In some languages, this is known as a *dictionary* or *associative array*.
You can mix and match the types of data you put into a hashmap, as long as you tell Java what to expect when creating it:
package com.opensource.example;
import java.util.HashMap;
public class Mapping {
public static void main(String[] args) {
HashMap<Integer, String> myMap = new HashMap<>();
myMap.put(71, "zombie");
myMap.put(2066, "apocalypse");
System.out.println(myMap.get(71) + " " + myMap.get(2066));
}
}
Run the code:
$ java ./main.java
zombie apocalypse
Iterating over a hashmap with forEach
There are many ways to retrieve all data pairs in a hashmap, but the most direct method is a `forEach` loop:
package com.opensource.example;
import java.util.HashMap;
public class Mapping {
public static void main(String[] args) {
HashMap<String, String> myMap = new HashMap<>();
myMap.put("foo", "hello");
myMap.put("bar", "world");
// retrieval
myMap.forEach( (key, value) ->
System.out.println(key + ": " + value));
}
}
Run the code:
$ java ./main.java
bar: world
foo: hello
Structured data
Sometimes it makes sense to use a Java hashmap so you don’t have to keep track of dozens of individual variables. Once you understand how to structure and retrieve data in a language, you’re empowered to generate complex data in an organized and convenient way. A hashmap isn’t the only data structure you’ll ever need in Java, but it’s a great one for related data.