【发布时间】:2013-09-24 13:08:43
【问题描述】:
我有一个 HashMap,其中包含 String 作为 key 和一个 Object 作为 value 为了对我的 HashMap 进行排序,我创建了一个 TreeMap ,遍历 HashMap 并将 HashMap 的每个条目放入一个 TreeMap ,其中 key 是带宽,值信号的实例。这是我的代码
public void createSortedSet(HashMap<String, Signal> map, long totalSize) {
TreeMap<Float, Signal> sortedMap = new TreeMap<Float, Signal>();
JOptionPane.showMessageDialog(null, map.size());
try {
final Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String messageName = iterator.next();
Signal signal = map.get(messageName);
signal.setBandwidth((signal.getSize() / (float) totalSize) * 100);
sortedMap.put(signal.getBandwidth(), signal);
}
JOptionPane.showMessageDialog(null, sortedMap.size());
} catch (Exception e) {
e.printStackTrace();
}
}
这里的问题是地图的大小是 8318,而在 while 循环之后,当我检查 TreeMap 的大小时它给出 455?是不是意味着不是所有信号的实例都存储在TreeMap中
有什么帮助吗?
【问题讨论】:
-
运行调试器查看多个信号对象是否共享相同的大小。
-
你的意思是相同的带宽?
-
对,但是带宽归结为大小,因为
totalSize没有变化。