将数据附加到子数组而不是用最新的条目覆盖它

can*_*eed 1 java

我目前有一个配置为这样的Map.

Map<String, ArrayList<Object>> map = new HashMap<String, ArrayList<Object>>();
Run Code Online (Sandbox Code Playgroud)

其目的是为了能够进行如下设置:

array("foo"->array(1->"aaa",2->"bbb",3->"ccc"),
      "bar"->array(1->"aaa",2->"bbb",3->"ccc"),
      "bah"->array(1->"aaa",2->"bbb",3->"ccc"),
)
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我可以很好地创建根数组,但它会执行以下操作,使用前面的示例作为插图

array("foo"->array(3->"ccc"),
      "bar"->array(2->"bbb"),
      "bah"->array(3->"ccc"),
)
Run Code Online (Sandbox Code Playgroud)

我试图找出的是如何附加子数组而不是覆盖它.我认为它很容易完成我只是遗漏了一些明显的东西.

小智 5

您需要的是首先检查map是否具有特定键的条目.如果没有,则添加一个空的arraylist.

之后,从地图中获取该arraylist并将对象添加到该arraylist.

Map<String, ArrayList<Object>> map = new HashMap<String, ArrayList<Object>>();
    String first = "FIRST";
    if (map.get(first) == null){
        map.put(first, new ArrayList<Object>());
    }

    map.get(first).add(new Object());
Run Code Online (Sandbox Code Playgroud)

如果您将在地图上方打印,您将获得所需的输出.