当前位置: 首页 > 面试题库 >

创建一个可观察的列表/集合

秦博达
2023-03-14
问题内容

我正在尝试ChoiceBox在JavaFX
8中创建一个,需要一个Collection。我不知道如何创建一个Collection……但是,如果我尝试:

 ObservableList<String> list = new ObservableList<String>();

我收到一个错误消息,说它无法实例化,ObservableList因为它是抽象的。可以理解的
如果我查看该文档,ObservableList可以看到SortedList implements ObservableList,但是我做不到:

 ObservableList<String> list = new SortedList<String>();

因为没有适用的构造函数。显然我需要ObservableList传递给SortedList,这很奇怪,因为我无法创建ObservableList

constructor SortedList.SortedList(ObservableList<? extends String>,Comparator<? super String>) is not applicable
  (actual and formal argument lists differ in length)
constructor SortedList.SortedList(ObservableList<? extends String>) is not applicable
  (actual and formal argument lists differ in length)

我不确定如何解密。如果我尝试

 ObservableList<String> list = new SortedList<SortedList<String>>();
 //or
 ObservableList<String> list = new SortedList<ObservableList<String>>();

出于绝望,我得到了一个更加复杂的错误。

    SortedList<String> list = new SortedList<String>();

也不起作用。它以某种方式起作用(但显然使用了不安全的操作):

ChoiceBox box = new ChoiceBox(FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip"));

所以我尝试了:

 ObservableList<string> list = new FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip");

但是那里也没有运气。我非常困惑,一遍又一遍地试图理解这一点,反复地做着同样的事情。我找到的文档显示了无济于事的示例,或者没有示例。官方文档也没有用:

例如,假设您有一个Collection
c,它可以是List,Set或另一种Collection。这个习惯用法创建了一个新的ArrayList(List接口的实现),最初包含c中的所有元素。

 List<String> list = new ArrayList<String>(c);

所以要创建ArrayList一个实现List,我需要一个List。我首先去看文档的原因是要学习如何使他们假设我拥有的东西。我迷路了。救命?


问题答案:

在以下位置使用工厂方法FXCollections

ObservableList<String> list = FXCollections.observableArrayList();

选择框构造函数中的不安全操作是因为尚未为选择框指定类型:

ChoiceBox<String> box = new ChoiceBox<>(FXCollections.observableArrayList("Asparagus", "Beans", "Broccoli", "Cabbage" , "Carrot", "Celery", "Cucumber", "Leek", "Mushroom" , "Pepper", "Radish", "Shallot", "Spinach", "Swede" , "Turnip"));

的错误SortedList是因为没有构造函数不带参数。(再次,请参阅javadocs。)有两个构造函数:最简单的一个构造函数引用一个ObservableList(该列表的排序列表将提供排序视图的)。所以你需要像

SortedList<String> sortedList = new SortedList<>(list);

要么

SortedList<String> sortedList = new SortedList<>(FXCollections.observableArrayList());


 类似资料:
  • 我有一个id列表,并且有一个方法,它接受id并返回可观察的 假设我有用户id(1),我需要使用此方法更新他的配置文件

  • 问题内容: 我正在尝试将项目设置为表视图,但是setitems方法需要一个可观察的列表,而我的模型中却有一个可观察的集合.FXCollections实用程序类没有给定可观察的集合来创建可观察的列表的方法。类强制转换异常(按预期)。 目前,我正在使用这种代码 而且我有一些问题: 在表中进行编辑是否会按预期更新基础集? 这是这样做的“正确”方法吗 简而言之,我需要样式指南或最佳做法,以便在可观察集和可

  • 我正在开发一个功能,我需要根据本地数据库数据过滤掉网络响应数据。 例如,我的网络层返回一个项目列表,我的数据库层返回一个可观察的ID列表。现在,我只想从网络层返回那些id与数据库层响应中的任何人都匹配的对象。 下面的代码从网络获取数据并将结果保存到数据库(缓存)。 我还有一个方法可以返回需要过滤的场馆列表 现在,我如何扩展前面的链,使用getDislikedVinces()observate从网络

  • 我试图理解当我使用 在或之后,在我使用时返回true 我知道是一次性的。isDisposed()返回false。有人能解释一下到底发生了什么吗?。我理解一个写得很好的观察。create不能在onComplete()或onError()之后发出项。

  • 我在创建一个将返回对象列表的可观察对象时遇到了麻烦。我有一个ID列表,想对我的数据库提出一个请求。在这种情况下,我使用的是Firebase。当得到一个结果时,我希望将这些对象中的每一个编译成一个列表,然后返回该列表。我需要在返回之前等待所有的对象都返回。我在我的视图模型反序列化器类中这样做。这是我的代码。 有几种方法可以从firebase数据库中返回数据,我可以返回Documentsnapshot

  • 假设我有一个,它从网络获取数据并发出数据,如果我订阅这个observable,每次它试图从网络请求数据时,它会很重。 我想创建BehaviorSubject并将其连接到observableA,这样任何其他线程/对象都将订阅BehaviorSubject以获取最新发出的数据。 到目前为止,我还不能用它来编码。我不能创建空的BehaviorSubject并在observableA内调用,因为它们彼此不