【问题标题】:HashMap with ArrayList带有 ArrayList 的 HashMap
【发布时间】:2014-08-04 10:47:45
【问题描述】:

我有一个关于带有 ArrayList 的 HashMap 的 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);

        }

【问题讨论】:

  • map.get(key).add(value) 检查是否为空
  • hashmap 一开始是空的
  • 如果你得到空值然后创建一个数组列表并为其添加值然后使用put()
  • hashmap 一开始是空的,虽然看不到它,但是它在哪里?

标签: java sorting arraylist hashmap


【解决方案1】:

我相信你正在寻找这样的东西,

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);

【讨论】:

  • key 不可能为空,实际上对key 的整个验证似乎没有必要。此外,HashMap 确实允许空键。
  • 使用containsKey(),这比检查值更好为null
  • @BheshGurung 同意。已编辑。
  • @ElliottFrisch 我喜欢任何评论,那么对它进行投票是一个好习惯。不是吗?
  • 非常感谢!我实现了它并且成功了!
【解决方案2】:
猜你喜欢
  • 2014-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2017-08-14
  • 2014-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多