【发布时间】:2013-09-29 12:01:29
【问题描述】:
我正在使用 HashMap,其中键是字符串,值是对象(信号)。在遍历 Map 时,我可以在将对象的某个属性写入文件之前对其进行编辑吗?
这是我的代码
public void createFile(HashMap<String , Signal> map, final BufferedWriter buffwriter, long totalSize) {
final Iterator<String> iterator = map.keySet().iterator();
while(iterator.hasNext()) {
String messageName = iterator.next();
Signal signal = map.get(messageName);
signal.setBandwidth((signal.getSize()/totalSize)*100);
csvOutput.write(signal.getSource());
csvOutput.write(signal.getName());
csvOutput.write(signal.getComponent());
csvOutput.write(Integer.toString(signal.getOccurance()));
csvOutput.write(Integer.toString(signal.getSize()) );
csvOutput.write(Float.toString(signal.getBandwidth()));
csvOutput.endRecord();
}
}
Signal.java
public class Signal implements Comparable<Signal>{
String name;
float bandwidth;
public void setName(String name){
this.name = name;
}
public void setBandwidth(float bandwidth){
this.bandwidth = bandwidth;
}
public String getName(){
return this.name;
}
public float getBandwidth(){
return this.bandwidth;
}
@Override
public int compareTo(Signal signal) {
return 1;
}
在上面的代码中,我使用messagName 作为映射中每个键的键,我得到了它的值 尝试设置带宽属性,然后写入文件,但没有更新带宽。
我该怎么做?我剩下的唯一选择是删除条目并在迭代时添加另一个具有新值的条目吗?
提前致谢
【问题讨论】:
-
Signal 类和方法的代码在哪里设置和获取带宽?
-
我也说一下
-
请提供
totalSize的声明。如果它的值为 100,则带宽将保持为signal.getSize()。只是为了检查。 -
检查更新,totalSize 是 long 类型,我将其作为参数传递给我想要更新带宽并将地图写入文件的方法
-
我在 Signal 中没有看到 signal.getSize()?