HashMap can be used to store key-value pairs.
But sometimes you may want to store multiple values for the same key.
For example:
For Key A, you want to store - Apple, Aeroplane
For Key B, you want to store - Bat, Banana
For Key C, you want to store – Cat, Car
The following code snippets will show you at least 3 different ways of storing key-value pairs with a distinction of Single Key and Multiple Values
HashMap – Single Key and Multiple Values using List
package com.skilledmonster.examples.util.map; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * HashMap - Single Key and Multiple Values using List * * @author Jagadeesh Motamarri * @version 1.0 */ public class SingleKeyMultipleValueUsingList { public static void main(String[] args) { // create map to store Map<String, List<String>> map = new HashMap<String, List<String>>(); // create list one and store values List<String> valSetOne = new ArrayList<String>(); valSetOne.add("Apple"); valSetOne.add("Aeroplane"); // create list two and store values List<String> valSetTwo = new ArrayList<String>(); valSetTwo.add("Bat"); valSetTwo.add("Banana"); // create list three and store values List<String> valSetThree = new ArrayList<String>(); valSetThree.add("Cat"); valSetThree.add("Car"); // put values into map map.put("A", valSetOne); map.put("B", valSetTwo); map.put("C", valSetThree); // iterate and display values System.out.println("Fetching Keys and corresponding [Multiple] Values n"); for (Map.Entry<String, List<String>> entry : map.entrySet()) { String key = entry.getKey(); List<String> values = entry.getValue(); System.out.println("Key = " + key); System.out.println("Values = " + values + "n"); } } }
HashMap – Single Key and Multiple Values using Google Guava Collections
package com.skilledmonster.examples.util.map; import java.util.Set; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; /** * HashMap - Single Key and Multiple Values using Google Guava Collections * * @author Jagadeesh Motamarri * @version 1.0 */ public class SingleKeyMultipleValueUsingGuava { public static void main(String[] args) { // create multimap to store key and values Multimap<String, String> multiMap = ArrayListMultimap.create(); // put values into map for A multiMap.put("A", "Apple"); multiMap.put("A", "Aeroplane"); // put values into map for B multiMap.put("B", "Bat"); multiMap.put("B", "Banana"); // put values into map for C multiMap.put("C", "Cat"); multiMap.put("C", "Car"); // retrieve and display values System.out.println("Fetching Keys and corresponding [Multiple] Values n"); // get all the set of keys Set<String> keys = multiMap.keySet(); // iterate through the key set and display key and values for (String key : keys) { System.out.println("Key = " + key); System.out.println("Values = " + multiMap.get(key) + "n"); } } }
HashMap – Single Key and Multiple Values using Apache Commons Collection
package com.skilledmonster.examples.util.map; import java.util.Set; import org.apache.commons.collections.MultiMap; import org.apache.commons.collections.map.MultiValueMap; /** * HashMap - Single Key and Multiple Values using Apache Commons Collections * * @author Jagadeesh Motamarri * @version 1.0 */ public class SingleKeyMultipleValueUsingApacheCollections { public static void main(String[] args) { // create multimap to store key and values MultiMap multiMap = new MultiValueMap(); // put values into map for A multiMap.put("A", "Apple"); multiMap.put("A", "Aeroplane"); // put values into map for B multiMap.put("B", "Bat"); multiMap.put("B", "Banana"); // put values into map for C multiMap.put("C", "Cat"); multiMap.put("C", "Car"); // retrieve and display values System.out.println("Fetching Keys and corresponding [Multiple] Values n"); // get all the set of keys Set<String> keys = multiMap.keySet(); // iterate through the key set and display key and values for (String key : keys) { System.out.println("Key = " + key); System.out.println("Values = " + multiMap.get(key) + "n"); } } }
Output
The output for all the above 3 scenarios will be same as the one below
No comments:
Post a Comment