Java代码将值放在hashMap中

时间:2014-10-11 03:39:01

标签: java hashmap

散列图存储数据。

 private final Map<VideoObj,Record> _data = new HashMap<VideoObj,Record>();

之间有什么区别
 Record rIn= new Record(video, numOwned+change, numOut, numRentals);
_data.put(video, rIn); 

并且

Record r= _data.get(video);
r.numOwned+=change;

在哪些情况下,这会导致值出现问题。

3 个答案:

答案 0 :(得分:1)

视频应该覆盖equals和hashcode方法,最好是Video类应该是最终的。

答案 1 :(得分:1)

我宁愿采用第二种方法,也可以使用null检查。并记录。

通过这种方式,程序清晰(简洁地)传达了不变量。

代码也暗示了值,Record是一个可变类。所以再次首先没有任何优势,为什么花在记忆上呢。

最后记住hashmap不是线程安全的。在这方面,尽管两者都是同样不安全的。

答案 2 :(得分:0)

第一个实例创建一个新的Record实例,并将其放在键video的映射中,这将替换为映射中该键存储的先前值。

第二个更改了密钥Record的地图中存储的当前video值。但是,它不会验证映射实际上是否包含该键,因此您可能会收到NullPointerException。