内部の値が変化するとキーが変化する自動更新マップが欲しい..
さて、Map
子の変更 ( ) で親の ae ストレージ ( )を変更するのは興味深いことですValue
。デザインが良いかどうかはわかりません。
キーを に変更してValue
も、map
変更されません
したがって、カスタムMap
を次のように記述します。
public class MyMap extends LinkedHashMap<String, Value> {/**/}
そして、メソッドをオーバーライドし、メソッドを使用してput
実装します。onValueChange()
Interface
各子はMap
throughのインスタンスを格納しますinterface
。
だからここに行く....:
RegisterItf
public interface RegisterItf {
public void onValueChange(String newKey, String oldKey, Value newValue);
}
マイマップ
public class MyMap extends LinkedHashMap<String, Value> implements RegisterItf{
private static final long serialVersionUID = 1L;
@Override
public Value put(String key, Value value) {
value.setReg(this); // send map instance to each child who registered
return super.put(key, value);
}
@Override
public void onValueChange(String newKey, String oldKey, Value newValue) {
//here you remove old key and add new one
}
}
価値
public class Value {
private String mSomeData;
private String mKey;
private RegisterItf reg;
public void setmKey(String key) {
if(reg != null){
reg.onValueChange(key, mKey, this);
}
this.mKey = key;
}
public void setReg(RegisterItf reg) {
this.reg = reg;
}
}
主要
MyMap map = new MyMap();
Value val = new Value();
val.setmKey("aa");
val.setmSomeData("blabla");
map.put(val.getmKey(), val);
...