【发布时间】:2021-09-22 16:37:42
【问题描述】:
我想使用HashMap 制作直方图,关键应该是延迟,值是延迟发生的次数。如果已经存在的延迟再次出现,我怀疑使用 HashMap replace 或 HashMap put 函数。我是这样做的:
int delay = (int) (loopcount-packetServed.getArrivalTime());
if(histogramType1.containsKey(delay)) {
histogramType1.replace(delay, histogramType1.get(delay) + 1);
} else {
histogramType1.put(delay, 1);
}
这是正确的吗?还是应该使用两倍的 put 函数?
【问题讨论】:
-
Replace "仅当当前映射到某个值时才替换指定键的条目"
-
所以我应该保留替换解决方案?
-
在这种情况下应该没关系,因为如果元素存在,它应该具有与
put相同的结果 - 因为使用了containsKeyreplace仅在存在映射时才被调用. -
我希望键保持不变,但附加到该键的值应该增加 1,我认为使用 put 函数会导致键的 2 倍附加不同的值它。
-
不,地图不允许重复键,因此调用
put而不是replace也会导致旧值被删除。