Milan
Milan

Reputation: 1875

java multi mapping arraylist

Is it possible to map key to Multi Dimensional Array List. Some thing like following example..

Map<K,V>

Where K is key for list of alphabet and V is a multi dimensional array list or normal array list that stores list of word. Some thing like a application that reads a dictionary file. I want to see an example. Example can be anything related to Map and Multi Dimensional Array-list. Or is there any other efficient way to implement collection? I have never used such implementations so if there is already a thread related to mine QA please post the link.

Upvotes: 6

Views: 19373

Answers (3)

Somnath Kadam
Somnath Kadam

Reputation: 6357

Following code without Google's Guava library. It is used for double value as key and sorted order

Map<Double,List<Object>> multiMap = new TreeMap<Double,List<Object>>();

for( int i= 0;i<15;i++)
{
    List<Object> myClassList = multiMap.get((double)i);
    if(myClassList == null)
    {
        myClassList = new ArrayList<Object>();
        multiMap.put((double) i,myClassList);
    }
    myClassList.add("Value "+ i);
}

List<Object> myClassList = multiMap.get((double)0);
if(myClassList == null)
{
    myClassList = new ArrayList<Object>();
    multiMap.put( (double) 0,myClassList);
}
myClassList.add("Value Duplicate");
for (Map.Entry entry : multiMap.entrySet()) 
{
  System.out.println("Key = " + entry.getKey() + ", Value = " +entry.getValue());
}

Upvotes: 4

I82Much
I82Much

Reputation: 27326

You can always do Map<String, <List<String>>. e.g.

Map<String, List<String>> multimap = new HashMap<String, List<String>>();
String key = "asdf";
List<String> values = Arrays.asList("foo", "bar");
multimap.put(key, values);

You can also use the Multimap<String, String> interface in Google Guava - might be a better fit for your needs. It simplifies the coding somewhat -

Multimap<String, String> multimap = new ArrayListMultimap<String, String>();
String key = "asdf";
multimap.put(key, "foo");
multimap.put(key, "bar");

Upvotes: 7

Aravind Yarram
Aravind Yarram

Reputation: 80176

You can use Guava's Multimap's if you want to associate multiple values with a single key. You need ArrayListMultimap for your specific case.

Example

ListMultimap<String, String> dict= new ArrayListMultimap<String, String>();
dict.put("key 1", "value 1");
dict.put("key 1", "value 2");
dict.put("key 2", "value 1");

Upvotes: 5

Related Questions