【问题标题】:Arraylist.clear() deletes content of hashTableArraylist.clear() 删除hashTable的内容
【发布时间】:2014-12-20 17:55:43
【问题描述】:

我有以下代码:

podmienky.put(key, podmienkyOblast);
podmienkyOblast.clear();

podmienkyHashTable<String, ArrayList<String>>podmienkyOblastArrayList<String>。如果我将podmienky.get("index").size() 放在podmienkyOblast.clear() 之前,它会返回6。但是,如果我将podmienky.get("index").size() 放在podmienkyOblast.clear() 之后,它会返回0。我认为如果我将某些内容放入哈希表中,我实际上会将其内容添加到其中。但正如我所见,它只存储对arrayList 的引用。我错了吗?我应该如何完成这项工作?

感谢转发

【问题讨论】:

  • 是的,它只是存储引用 -- 你应该创建一个副本并自己保存
  • 这就是它应该如何工作的。 “我应该如何完成这项工作”是什么意思?

标签: java arraylist hashtable


【解决方案1】:

您将对您的ArrayList 的引用放入Hashtable。如果要将 ArrayList 中的值添加到表中,则必须遍历列表中的元素。

for(Object element : podmienkyOblast) {
    // TODO generate a key for your value here
    String key = "...";
    podmienky.put(key, element);
}

【讨论】:

    【解决方案2】:

    Java处理对象引用,如果需要复制对象,需要考虑cloning(也就是深拷贝)。

    另外,接口优于实现,因此请使用List 而不是ArrayList

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多