Java コレクションについて質問があります。Java コレクションを反復処理し、if 節が true の場合、コレクションのエントリを変更したいと考えています。if-clause 本体内で新しい値が受け入れられますが、後でコレクション全体を印刷したい場合は、古い値でコレクションを再度印刷します。
ここにコード:
public boolean checkConsumeStorageCapacity(Multimap<String, Values> mm1, Multimap<String, Values> mm2)
{
boolean enoughStorageCapacity = false;
Multimap<String, Values> mmApp = mm1;
Multimap<String, Values> mmHW = mm2;
Collection<Values> colA = mmApp.get("Storage");
Collection<Values> colH = mmHW.get("Memory");
for (Values vA2 : colA) {
for (Values vH2 : colH) {
if (vA2.getName().equals("Size") && vH2.getName().equals("Size")) {
float StoSize = Float.parseFloat(vA2.getValue());
float MemSize = Float.parseFloat(vH2.getValue());
float maintainableStoSize = StoSize * maintainabilityfactor;
if (MemSize >= maintainableStoSize) {
MemSize -= maintainableStoSize;
vH2.setValue(String.valueOf(MemSize));
String s = vH2.getValue();
System.out.println(s);
enoughStorageCapacity = true;
return enoughStorageCapacity;
}
break;
}
}
}
System.out.println(colH);
Values は 3 つの文字列を含むオブジェクトです。ゲッター/セッターはすべて正しく宣言されています。s を出力すると正しい値が得られますが、colH を出力すると古い値が返されます。新しい値を設定するだけでは十分ではありません。さらに、コレクションに何かをコミットする必要がありますか?
よろしくお願いします。
編集:さらに理解するために、ここではvaluesクラス。
public class Values {
private String name;
private String type;
private String value;
public Values(String name, String type, String value)
{
this.name = name;
this.type = type;
this.value = value;
}
public String getName()
{
return name;
}
public String getType()
{
return type;
}
public String getValue()
{
return value;
}
public void setName(String name)
{
this.name = name;
}
public void setValue(String value)
{
this.value = value;
}
public void setType(String type)
{
this.type = type;
}
@Override
public String toString() {
return "name=" + name + ", type=" + type + ", value=" + value;
}
}