java-8 - JavaFX : ObsevableMap keySet as an ObservableSet

标签 java-8 javafx-8

我想将 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/

相关文章:

java - 将 Files.lines 与 .map(line -> line.split ("multiple delimiters")) 一起使用

java - 如何使用lambda表达式调用比较器?

maven - 找不到类 AWS lambda 异常

java - 在 TreeTableView 中选择子项时还要选择父项直至根

javafx - 在 JavaFX 2 和 8 之间选择 TableView 期间焦点行为发生变化

java - javafx 游戏排行榜

java - openjdk 中的 networkaddress.cache.ttl null

java - thenAccept 和 thenApply 的区别

填充 ListView 时出现 JavaFx NullPointer 异常

JavaFX TableView 具有两个固定列,最后一个列占用可用空间