我想将ObservableMap的keySet转换为只读ObservableSet。我不想复制该值,对ObservableMap的任何修改都必须影响Observable keySet。如果我将另一个集合绑定到可观察的密钥集内容,则其内容会自动更新。
这就是我想写的内容。
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中是否有此功能?
答案 0 :(得分:1)
您请求的功能不需要特殊的ObservableSet
。它已经是Map
接口合同的一部分:
ObservableMap<String, Object> map = FXCollections.observableHashMap();
Set<String> keySet = map.keySet();
map.put("v", new Object());
assert keySet.contains("v");
Map
的键集始终反映对支持地图所做的更改。
<子> http://docs.oracle.com/javase/8/docs/api/java/util/Map.html#keySet-- 子>
返回此地图中包含的键的
Set
视图。该集由地图支持,因此对地图的更改将反映在集中,反之亦然。