gpt4 book ai didi

java - 迭代 HashMap 时更新对象属性

转载 作者:行者123 更新时间:2023-11-30 09:17:22 25 4
gpt4 key购买 nike

我正在使用一个 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();
}
}

信号.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 作为映射中每个键的键,我得到了它的值尝试设置带宽属性,然后将其写入文件,但它没有更新带宽。

我该怎么做?我剩下的唯一选择是删除条目并在迭代时添加另一个具有新值的选项吗?

提前致谢

最佳答案

让我猜猜,您的带宽保持为 0?那是因为你的计算方式。我假设 getSize() 返回一个 int/long,而 totalSize 是一个 int/long。这样就得出了你的计算结果

(signal.getSize()/totalSize)*100

也是一个整数。尝试以下操作:

(signal.getSize() / (float) totalSize) * 100

现在其中一个操作数是一个 float ,这使得计算结果也是一个 float 。希望这能解决您的问题。

另见 here .

关于java - 迭代 HashMap 时更新对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18978761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com