【问题标题】:How to create an ObservableList based on a custom data structure like stack如何基于自定义数据结构(如堆栈)创建 ObservableList
【发布时间】:2016-05-08 11:52:39
【问题描述】:

例如,如果您有一个ArrayList,您可以执行以下操作:

ArrayList<T> list = new ArrayList<T>();
ObservableList<T> data = FXCollections.observableArrayList(list);

同样,如果我有一个定制的 Stack 而不是 ArrayList,我将如何制作一个 ObservableList?

【问题讨论】:

  • 我们是在谈论java.util.Stack 还是本土实现?如果它是本土的,你能发布它的结构吗?
  • Javadocs for ModifiableObservableListBase 展示了如何包装任意结构以使其可观察,如果您的 Stack 不是 Collection 实现。
  • 还要注意FXCollections.observableArrayList(collection) 创建一个新的可观察列表,并将提供的集合的元素复制到它。在这种情况下,可观察列表(与FXCollections.observableList(list) 不同)不受提供列表的支持:对可观察列表的更改不会传播到提供的列表,反之亦然。因此,复制此行为所需的只是一种获取堆栈中所有元素(作为集合或数组)的机制。

标签: java data-structures javafx stack javafx-8


【解决方案1】:

一种方法是在您的自定义堆栈中使用implement List 接口。正如您在documentation 中看到的那样,提供了一个FX.Collections#observableList(List&lt;E&gt;) 方法。

所以...

public class MyStack<T> implements List<T> {
    // Provide the list interface...
}

并直接传递。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-09
    • 2019-03-02
    • 2021-05-31
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-11
    • 2012-06-10
    相关资源
    最近更新 更多