【发布时间】:2016-09-02 17:42:51
【问题描述】:
如果我知道输入到地图条目中的值是相同的,我最好检查它是否不在地图中或只是进行放置? 也就是说,是
if (!map.containsKey(key)){
map.put(key, value);
}
如果我知道键的值是相同的,那比只做map.put(key, value) 更好。
背景:
我正在尝试计算将 id 映射到一组整数的地图的所有重叠。例如:给定{A:1,2,3; B:2,4,6; C:2,3,4; D:1,3,5},我需要得到这张地图:{AnB:2; AnC:2,3; AnD:1,3; BnC:2,4; AnBnC:2; AnCnD:3;}。递归地执行此操作不是一种选择,因为对于我们运行堆空间的较大集合。所以我通过将下一个“层”添加到现有层来迭代地进行。所以为了得到 AnBnC,我使用 AnB 并计算与 C 的交集。但这也意味着我使用 AnC 并计算与 B 的交集,这将给出相同的结果。
谢谢!
【问题讨论】:
-
你觉得哪一个更简单/更清晰?你应该使用那个。执行两项操作可能比一项慢。
-
刚刚将其编辑为 if
!containsKey,因此无论哪种方式它仍然是一个操作。 -
在 java-8 中考虑
Map#putIfAbsent -
containsKey是一项操作,所以如果您执行其他任何操作会产生多个操作。