奇妙な状況があります-次のように初期化される HashMap があります。
HashMap<String, HashSet<String>> downloadMap = new HashMap<String, HashSet<String>>();
そして、クォーツスケジューラを介して無期限に実行される次のものがあります。
myHashSet = retrieve(animal);
downloadMap.put(myKey, myHashSet);
// do stuff
downloadMap.get(myKey).clear();
その後、1 つの値が異なるキーに関連付けられます。したがって、たとえば、次のようなものがあります。
Kitens [cute kitten, sad kitten]
Puppies [cute kitten, sad kitten]
これは決して起こるべきではありません。
特に、子猫の HashSet を取得した後:
myHashSet = retrieve(animal);
myHashSet = [かわいい子猫、悲しい子猫] downloadMap = 子猫 []、子犬 []
次に put() が実行され、次のようになります。
downloadMap = Kitens [cute kitten, sad kitten], Puppies [cute kitten, sad kitten]
なぜこれが事実なのか誰にも分かりますか?
前もって感謝します!