首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaFX ObservableList或ReactFX LiveList的实时映射

JavaFX ObservableList或ReactFX LiveList的实时映射
EN

Stack Overflow用户
提问于 2015-04-27 18:28:06
回答 1查看 956关注 0票数 2
代码语言:javascript
复制
/**
 * An observable analogue of {@code Stream.map}. The output list is updated
 * whenever the input list changes.
 */
public static <T, R> ListBinding<R> map(
    ObservableList<? extends T> list,
    Function<T, ? extends R> mapper
);

我编写了上面的JavaFX实用程序方法,它创建ObservableList的实时映射,在源列表更改时随时更新映射。后来我发现了ReactFX及其相应的LiveList.map

代码语言:javascript
复制
public interface LiveList {
    default <F> LiveList<F> map(Function<? super E,? extends F> f);
}

不想再重新发明轮子,我现在正在寻找一个映射函数,它返回一个可观察的列表,并自动观察那些可观测到的。基本上是一个完整列表的flatMap。例如,如果我有这个:

代码语言:javascript
复制
<T, R> ListBinding<R> flatMap(
    ObservableList<? extends T> list,
    Function<T, ObservableValue<? extends R>> mapper
);

然后我就可以这么做:

代码语言:javascript
复制
ObservableList<Button>  buttons;
ObservableList<Integer> widths = flatMap(buttons, Button::widthProperty);

如果添加或删除按钮,则此widths列表会增长和缩小,如果按钮的宽度发生变化,则会更新该列表。

这样的函数是否存在于JavaFX或ReactFX中?或者其他类似的东西?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-27 22:31:50

我不知道flatMap对于可观察列表的任何现有实现。

但是,计划在ReactFX 2.0中使用此签名

代码语言:javascript
复制
public interface LiveList {
    default <F> LiveList<F> flatMap(Function<? super E,? extends ObservableList<F>> f);
}

这比您建议的更一般:它将一个元素映射到一个列表,而不仅仅是一个值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29903322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档