Search code examples
javamultimap

Return method for single key in MutilMap


public static String getCTScanSite(String val) {
    Multimap<String, String> map = HashMultimap.create();

    map.put("07", "069");
    map.put("01", "073");
    map.put("04", "085");
    map.put("01", "086");
    map.put("96", "099");
    map.put("112", "100");
    map.put("01", "101");
    map.put("109", "102");
    map.put("106", "103");
    map.put("119", "104");

    return map.toString();
}

What method that I need to use in order to return String val? I used Multimap because I have multiple key. As for now my output would return all key. But I need only String val(passing variable).

"ctScanSite": "{01=[073, 086, 101], 04=[085], 05=[112], 07=[069], ...}"

Thank you

my expected output should return single key:

 "ctScanSite": "01", 

Solution

  • You can use invertFrom of Multimaps and invert your map, then get the keys from the input value using the invertedMap. Refer below:

    public static String getCTScanSite(String val) {
        Multimap<String, String> map = HashMultimap.create();
    
        map.put("07", "069");
        map.put("01", "073");
        map.put("04", "085");
        map.put("01", "086");
        map.put("96", "099");
        map.put("112", "100");
        map.put("01", "101");
        map.put("109", "102");
        map.put("106", "103");
        map.put("119", "104");
        Multimap<String, String> invertedMap = Multimaps.invertFrom(map, ArrayListMultimap.<String, String>create());
        return invertedMap.get(val);
    }