JavaFX:ObsevableMap keySet作为ObservableSet

时间:2014-09-15 07:24:01

标签: java-8 javafx-8

我想将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中是否有此功能?

1 个答案:

答案 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视图。该集由地图支持,因此对地图的更改将反映在集中,反之亦然。