HashMap与ArrayList

4

我有一个关于HashMap和其中包含ArrayList的Java问题。键是字符串,值是ArrayList (HashMap<String, ArrayList<Object>>)

我得到了多个键的列表,我需要将相应的值放入ArrayList中,但我不确定如何操作。

以下是一个例子:

(我所获得的)

ABC
ABC
ABC
123
123

这些键实际上是文件名,因此文件是ArrayList的值。现在我需要分离这些文件名,以便将文件添加到ArrayList中。这样说您是否明白?

这是我所拥有的唯一代码:

Set<String> tempModels = Utils.getSettingSet("module_names", new HashSet<String>(), getActivity());
        for(String s : tempModels) {
            Log.d("Loading from shared preferences: ", s);
            String key = s.substring(0, 17);

        }

1
map.get(key).add(value) 检查是否为null - jmj
哈希表一开始是空的。 - Nelson.b.austin
如果您得到了空值,则创建一个数组列表并将值添加到其中,然后使用 put() - jmj
哈希表一开始是空的,但我看不到它,它在哪里呢? - Bhesh Gurung
2个回答

4
我相信你正在寻找类似以下内容的信息,
List<Object> al = map.get(key);
if (al == null) {
  al = new ArrayList<Object>();
  map.put(key, al);
}
al.add(value);

请注意上述使用了原生的Object列表。如果可能的话,您应该选择适当的类型并使用它。 编辑 有些人喜欢(稍微缩短的)形式,
if (!map.containsKey(key)) {
  map.put(key, new ArrayList<Object>());
}
map.get(key).add(value);

2
key 不可能为空,实际上对 key 的整个验证似乎是不必要的。此外,HashMap 允许空键。 - Bhesh Gurung
2
使用containsKey()比检查值是否为null更好。 - Braj
@BheshGurung 同意。已编辑。 - Elliott Frisch
@ElliottFrisch 如果你喜欢任何评论,那么点赞是一个很好的习惯。不是吗? - Braj
非常感谢!我已经实现了它,而且它运行良好! - Nelson.b.austin
@user3218114 定义“更好”。虽然这种形式更短,但需要执行一次额外的映射查找。我肯定不认为它是“更好”的。 - Brett Okken


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接