我想要一个自动更新的地图,其中的键随着内部值的变化而变化..
好吧,您对更改Map
任何子项更改 ( Value
) 时更改父级 ae 存储 ( ) 很感兴趣。不知道设计好不好。
如果您将密钥更改为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);
...