我想将 ObservableMap 的 keySet 转换为只读 ObservableSet。我不想复制值,对 ObservableMap 的任何修改都必须影响 Observable keySet。如果我将另一个集合绑定(bind)到可观察的键集内容,其内容会自动更新。
这就是我想写的。
ObservableMap<String, Object> map = FXCollections.observableHashMap();
ObservableSet<String> keySet = FXCollections.observableKeySet(map);
Set<String> boundSet = new HashSet<String>();
Bindings.bindContent(boundSet, keySet);
map.put("v", new Object());
assert boundSet.contains("v");
JavaFX SDK 中是否有此功能?
最佳答案
您请求的功能不需要特殊的ObservableSet
。它已经是 Map
接口(interface)契约的一部分:
ObservableMap<String, Object> map = FXCollections.observableHashMap();
Set<String> keySet = map.keySet();
map.put("v", new Object());
assert keySet.contains("v");
Map
的键集始终反射(reflect)对支持映射所做的更改。
<子> http://docs.oracle.com/javase/8/docs/api/java/util/Map.html#keySet--
Returns a
Set
view of the keys contained in this map. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa.
关于java-8 - JavaFX : ObsevableMap keySet as an ObservableSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25842780/