我想通过使用a来制作直方图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);
}
Run Code Online (Sandbox Code Playgroud)
它是否正确?或者我应该使用put函数的两倍?
Tun*_*aki 28
有绝对没有区别put,并replace当对于想要的键当前映射.来自replace:
仅当指定键当前映射到某个值时才替换该条目的条目.
这意味着,如果已经对给定键的映射关系,双方put并replace会更新以同样的方式在地图.两者都将返回与键关联的先前值.但是,如果没有该键的映射,那么replace将是无操作(将不执行任何操作),而put仍将更新映射.
从Java 8开始,请注意您可以使用
histogramType1.merge(delay, 1, Integer::sum);
Run Code Online (Sandbox Code Playgroud)
这将照顾每一个条件.来自merge:
如果指定的键尚未与值关联或与之关联
null,则将其与给定的非空值相关联.否则,将相关值替换为给定重映射函数的结果,或者如果结果为则删除null.
在这种情况下,delay -> 1如果条目不存在,我们将创建条目.如果它确实存在,则通过将值递增1来更新它.
| 归档时间: |
|
| 查看次数: |
25563 次 |
| 最近记录: |