我有以下代码:
podmienky.put(key, podmienkyOblast);
podmienkyOblast.clear();
podmienky
为HashTable<String, ArrayList<String>>
,podmienkyOblast
为ArrayList<String>
。如果我将podmienky.get("index").size()
放在podmienkyOblast.clear()
之前,它会返回6。但是如果我在podmienky.get("index").size()
之后放podmienkyOblast.clear()
它返回0.我认为如果我把东西放到哈希表中,我会实际添加它的内容。但正如我所看到的那样,它只存储了对arrayList的引用。我错了吗?我该怎么做才能做到这一点?
先谢谢
答案 0 :(得分:0)
您将ArrayList
的引用加入Hashtable
。如果要将ArrayList
中的值添加到表中,则必须迭代列表中的元素。
for(Object element : podmienkyOblast) {
// TODO generate a key for your value here
String key = "...";
podmienky.put(key, element);
}
答案 1 :(得分:0)
Java处理Object引用,如果需要复制对象,则需要考虑cloning(a.k.a深层复制)。
另外,赞成接口实现,因此请使用List
代替ArrayList
。