DomX23
DomX23

Reputation: 887

Java HashMap: adding to arraylist

I'm using the HashMap class and it looks like this:

HashMap<String, ArrayList<String>> fileRank = new HashMap<String, ArrayList<String>>();

I'm wondering how to add a new String into the Arraylist after the initial put.

fileRank.put(word, file1);

I would like to add file2 after file1 to the key: word from above.

Upvotes: 4

Views: 10633

Answers (5)

Ayie Shindo
Ayie Shindo

Reputation: 43

private static HashMap> mmArrays = new HashMap>();

mmArrays.put(key,data);

Upvotes: 0

StriplingWarrior
StriplingWarrior

Reputation: 156708

You have to get the array list out first:

ArrayList<String> list = fileRank.get(word);
list.add(file1);

Of course, it becomes more complicated if you don't know whether there is an entry for that key yet.

ArrayList<String> list = fileRank.get(word);
if (list == null) {
    list = new ArrayList<String>();
    fileRank.put(word, list);
}
list.add(file1);

Upvotes: 5

Mechkov
Mechkov

Reputation: 4324

Get the ArrayList based on the String key, do add() to the ArrayList and then put it back into the HashMap (optional, since the map already holds the reference to it);

fileRank.get(word).add(String)
fileRank.put(work, list);

Upvotes: 2

ollins
ollins

Reputation: 1849

A possible solution:

public class MyContainer {

    private final Map<String, List<String>> myMap = new HashMap<String, List<String>>();

    public void add(String key, String value) {
        if(myMap.containsKey(key)) {
            myMap.get(key).add(value);
        } else {
            ArrayList<String> newList = new ArrayList<String>();
            newList.add(value);

            myMap.put(key, newList);
        }
    }
}

Upvotes: 0

Robin
Robin

Reputation: 36621

You ask the map for the value for a certain key, which is an ArrayList, on which you can call add.

String key = "myKey";
fileRank.put( key, new ArrayList<String>() );
//...
fileRank.get( key ).add( "a value");

Upvotes: 3

Related Questions