HashMap with multiple values under the same key

前端 未结 22 1844
旧时难觅i
旧时难觅i 2020-11-22 06:49

Is it possible for us to implement a HashMap with one key and two values. Just as HashMap?

Please do help me, also by telling (if there is no way) any other way to

相关标签:
22条回答
  • 2020-11-22 07:00

    No, not just as a HashMap. You'd basically need a HashMap from a key to a collection of values.

    If you're happy to use external libraries, Guava has exactly this concept in Multimap with implementations such as ArrayListMultimap and HashMultimap.

    0 讨论(0)
  • 2020-11-22 07:00

    The easiest way would be to use a google collection library:

    import com.google.common.collect.ArrayListMultimap;
    import com.google.common.collect.Multimap;
    
    public class Test {
    
        public static void main(final String[] args) {
    
            // multimap can handle one key with a list of values
            final Multimap<String, String> cars = ArrayListMultimap.create();
            cars.put("Nissan", "Qashqai");
            cars.put("Nissan", "Juke");
            cars.put("Bmw", "M3");
            cars.put("Bmw", "330E");
            cars.put("Bmw", "X6");
            cars.put("Bmw", "X5");
    
            cars.get("Bmw").forEach(System.out::println);
    
            // It will print the:
            // M3
            // 330E
            // X6
            // X5
        }
    
    }
    

    maven link: https://mvnrepository.com/artifact/com.google.collections/google-collections/1.0-rc2

    more on this: http://tomjefferys.blogspot.be/2011/09/multimaps-google-guava.html

    0 讨论(0)
  • Yes, this is frequently called a multimap.

    See: http://google-collections.googlecode.com/svn/trunk/javadoc/index.html?com/google/common/collect/Multimap.html

    0 讨论(0)
  • 2020-11-22 07:05

    Another nice choice is to use MultiValuedMap from Apache Commons. Take a look at the All Known Implementing Classes at the top of the page for specialized implementations.

    Example:

    HashMap<K, ArrayList<String>> map = new HashMap<K, ArrayList<String>>()
    

    could be replaced with

    MultiValuedMap<K, String> map = new MultiValuedHashMap<K, String>();
    

    So,

    map.put(key, "A");
    map.put(key, "B");
    map.put(key, "C");
    
    Collection<String> coll = map.get(key);
    

    would result in collection coll containing "A", "B", and "C".

    0 讨论(0)
  • 2020-11-22 07:06

    We can create a class to have multiple keys or values and the object of this class can be used as a parameter in map. You can refer to https://stackoverflow.com/a/44181931/8065321

    0 讨论(0)
  • 2020-11-22 07:06

    Apache Commons collection classes can implement multiple values under same key.

        MultiMap multiMapDemo = new MultiValueMap();
    
        multiMapDemo .put("fruit", "Mango");
        multiMapDemo .put("fruit", "Orange");
        multiMapDemo.put("fruit", "Blueberry");
    
        System.out.println(multiMap.get("fruit"));
    

    Maven Dependency

        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-collections4 -- 
         >
         <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-collections4</artifactId>
             <version>4.4</version>
        </dependency>
    
    0 讨论(0)
提交回复
热议问题