Java HashMap:添加到arraylist

Java HashMap:添加到arraylist,java,hashmap,Java,Hashmap,我使用的是HashMap类,它如下所示: HashMap<String, ArrayList<String>> fileRank = new HashMap<String, ArrayList<String>>(); 我想在file1之后添加file2到上面的关键字:word 您必须首先获得阵列列表: ArrayList<String> list = fileRank.get(word); list.add(file1); Arra

我使用的是HashMap类,它如下所示:

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

我想在file1之后添加file2到上面的关键字:word

您必须首先获得阵列列表:

ArrayList<String> list = fileRank.get(word);
list.add(file1);
ArrayList list=fileRank.get(word);
列表。添加(文件1);
当然,如果你还不知道是否有一个输入键,它会变得更加复杂

ArrayList<String> list = fileRank.get(word);
if (list == null) {
    list = new ArrayList<String>();
    fileRank.put(word, list);
}
list.add(file1);
ArrayList list=fileRank.get(word);
if(list==null){
列表=新的ArrayList();
fileRank.put(单词、列表);
}
列表。添加(文件1);

您向映射请求某个键的值,该键是一个ArrayList,您可以在其上调用add

String key = "myKey";
fileRank.put( key, new ArrayList<String>() );
//...
fileRank.get( key ).add( "a value");
String key=“myKey”;
put(key,newarraylist());
//...
get(key).add(“一个值”);

根据字符串键获取
ArrayList
,对ArrayList执行
添加()
,然后将其放回
HashMap
(可选,因为映射已经包含对它的引用)

一种可能的解决办法:

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);
        }
    }
}
公共类MyContainer{
私有最终映射myMap=newhashmap();
公共void添加(字符串键、字符串值){
if(myMap.containsKey(键)){
myMap.get(key.add)(value);
}否则{
ArrayList newList=新的ArrayList();
添加(值);
myMap.put(key,newList);
}
}
}

私有静态HashMap>mmArrays=newhashmap>()


mmArrays.put(键、数据)

您可能还希望查看第三方集合库中的multimap类。注意:如果可能,请将接口用作声明类型:Map fileRank=new HashMap();为什么要把它放回去?有必要吗?你不必。编辑了我的帖子,觉得这样更可读。
fileRank.get(word).add(String)
fileRank.put(work, list);
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);
        }
    }
}