Reputation: 887
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
Reputation: 43
private static HashMap> mmArrays = new HashMap>();
mmArrays.put(key,data);
Upvotes: 0
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
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
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
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