我目前开始了解一些开源控制器(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。键类型为FlowEntry,值部分为SortedMap <Long, Double>,因此另一个具有Long键和Double值的映射。

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


这将向外部地图添加一个条目。密钥是matchedFlow,值是

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


这将获取使用new TreeMap<Long, Double>()创建的排序映射,并使用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);

10-08 09:20