java - 关于 eclipse 中的 java map

标签 java

有一些开源 Controller ( floodlight ),我目前开始了解代码结构,但我在代码中看到了这一行,是否应该添加

Collections.synchronizedSortedMap(new TreeMap<Long, Double>())

什么将被添加到 flowStatTable 中?

protected SortedMap <FlowEntry, SortedMap <Long, Double>> flowStatTable;
flowStatTable.put(matchedFlow, Collections.synchronizedSortedMap(new TreeMap<Long, Double>()));

为什么这样访问:

flowStatTable.get(matchedFlow).put(checkPointTimeStamp, utilization);

最佳答案

SortedMap <FlowEntry, SortedMap <Long, Double>>

这声明了 SortedMap 。 key 类型为FlowEntry值部分为SortedMap <Long, Double>所以另一张 map 上有 Long key 和一个Double值。

flowStatTable.put(matchedFlow, Collections.synchronizedSortedMap(new TreeMap<Long, Double>()));

这是向外部 map 添加一个条目。关键是matchedFlow ,值为

Collections.synchronizedSortedMap(new TreeMap<Long, Double>())

这是使用 new TreeMap<Long, Double>() 创建的排序 map 并使用 Collections.synchronizedSortedMap将其转换为同步映射以使其线程安全。

flowStatTable.get(matchedFlow).put(checkPointTimeStamp, utilization);

此内容的第一部分 flowStatTable.get(matchedFlow)正在从外部映射中获取值,因此获取的结果将是 SortedMap <Long, Double>put(checkPointTimeStamp, utilization)然后,部分将在此内部映射中存储新的键/值对。

你可以这样编写代码:

SortedMap<Long, Double> newInner = Collections.synchronizedSortedMap(new TreeMap<Long, Double>());

flowStatTable.put(matchedFlow, newInner);

...

SortedMap<Long, Double> existingInner = flowStatTable.get(matchedFlow);

existingInner.put(checkPointTimeStamp, utilization);

关于java - 关于 eclipse 中的 java map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25801872/

相关文章:

java - 如何将 Jersey beans 注入(inject) Weld 中的 Quartz 作业中?

java - 在 Android 上从 sdk 22 更新到 23 后出现 FragmentManager 错误

java - 泛型类定义中的可变长度类型参数

java - 我怎样才能将这段代码转换为循环?

java - Spring中的动态@Value等价物?

java - 使用 Jtextfield 的值作为 java 代码

java - EL表达式解析整型为long

java - 有没有办法用 hibernate POJO 映射表函数?

java - opencv库支持哪些android API?

Java:强制子类覆盖父类(super class)的方法