我有一个奇怪的情况 - 有一个 HashMap,初始化如下:
HashMap<String, HashSet<String>> downloadMap = new HashMap<String, HashSet<String>>();
然后我有以下事情,将通过石英调度程序无限期地执行:
myHashSet = retrieve(animal);
downloadMap.put(myKey, myHashSet);
// do stuff
downloadMap.get(myKey).clear();
之后发生的是一个值与不同的键相关联。因此,例如,我将拥有以下内容:
Kitens [cute kitten, sad kitten]
Puppies [cute kitten, sad kitten]
这永远不应该发生。
特别是,在我检索小猫的 HashSet 之后:
myHashSet = retrieve(animal);
myHashSet = [可爱的小猫,悲伤的小猫] downloadMap = Kittens [], Puppies[]
然后 put() 被执行,我得到:
downloadMap = Kitens [cute kitten, sad kitten], Puppies [cute kitten, sad kitten]
有谁知道为什么会这样?
先感谢您!