gpt4 book ai didi

java - JavaFX ObservableList 或 ReactFX LiveList 的实时映射

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:20:08 26 4
gpt4 key购买 nike

/**
* 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 :

public interface LiveList {
default <F> LiveList<F> map(Function<? super E,? extends F> f);
}

不想再次重新发明轮子,我现在正在寻找一个 map 函数,它返回一个 observables 列表并自动监视这些 observables。基本上是一个 flatMap对于整个列表。例如,如果我有这个:

<T, R> ListBinding<R> flatMap(
ObservableList<? extends T> list,
Function<T, ObservableValue<? extends R>> mapper
);

然后我可以这样做:

ObservableList<Button>  buttons;
ObservableList<Integer> widths = flatMap(buttons, Button::widthProperty);

这个widths 列表会随着按钮的添加或删除而增长和缩小,并且会在按钮的宽度改变时更新。

JavaFX或ReactFX中是否存在这样的功能?或者类似的东西?

最佳答案

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

但是,它计划用于 ReactFX 2.0,可能带有此签名

public interface LiveList {
default <F> LiveList<F> flatMap(Function<? super E,? extends ObservableList<F>> f);
}

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

关于java - JavaFX ObservableList 或 ReactFX LiveList 的实时映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com