java put方法是什么意思_java-HashMap put方法的说明

我有一个奇怪的情况-有一个HashMap,其初始化如下:

HashMap> downloadMap = new HashMap>();

然后我有以下内容,这些内容将通过石英调度程序无限期地执行:

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 =小猫[],幼犬[]

然后执行put(),我得到:

downloadMap = Kitens [cute kitten, sad kitten], Puppies [cute kitten, sad kitten]

有谁知道为什么会这样吗?

先感谢您!

解决方法:

看起来您使用相同的HashSet< String>在您的HashMap< String,HashSet< String>>的所有值中引用.知道这一点,问题在于如何在HashMap中插入HashSet< String> s.请注意,您必须使用新的HashSet< String>每个键值对的参考.

相应地更新您的问题,以获得更具体的答案.

不直接与实际问题相关联,最好是面向接口的程序而不是直接的类实现.这样,我的意思是您应该将downloadMap变量声明为

Map> downloadMap = new HashMap>();

与将放置在此地图中的集合相似.

更多信息:

标签:hashmap,java

来源: https://codeday.me/bug/20191030/1968135.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值