当前位置: 首页 > 知识库问答 >
问题:

排序JavaFX ObservableList的高效更新

卢元龙
2023-03-14

我有一个拥有数千个条目的Java ObservableList,它支持JavaFX TableView,每秒接收数百个更新。

ObservableList由ArrayList支持。可以对列表应用任意排序顺序。更新可能会改变列表中单个实体的排序顺序。如果我试图在每次更新后预制排序,我会有性能问题,所以目前我有一个后台任务每秒钟执行一次排序。不过,如果可能的话,我想尝试实时排序。

共有1个答案

萧鸿轩
2023-03-14

我会用树。它可以根据O(log N)时间复杂度更新顺序,而ArrayList将根据每个条目O(N)进行插入排序。

 类似资料:
  • 这不是经典的“合并两个排序”列表问题,这在线性时间内是相当微不足道的。 我想做的是合并两个对的列表,它们已经按排序,其中两个列表中都有具有相同的对象:这些对象应该合并(添加)它们的

  • 我很惊讶以前没有人问过这个特定的问题,但我真的没有在SO上或。 假设我有一个包含整数的随机numpy数组,例如: 但我希望解决方案按降序排序。 现在,我知道我总能做到: 但这最后一句话是否高效?它不创建一个按升序排列的副本,然后反转这个副本以得到按反转顺序排列的结果吗?如果情况确实如此,是否有一个有效的替代方案?看起来不像接受参数来更改排序操作中比较的符号,以获得相反的顺序。

  • 问题内容: 所以我有一个MergeSort算法,我想将MergeSort与插入排序结合使用以减少合并的开销,问题是如何?我想使用插入排序对细分进行排序,然后合并。 问题答案: 合并会自动对元素进行排序。但是,当列表低于某个阈值时,可以使用插入排序进行排序: 进行除此以外的任何操作(除了稍微超出阈值)会 增加 合并排序所花费的时间。 尽管合并排序为O(n log n),插入排序为O(n 2),但是插

  • 我有INT数组 我也在寻找类似的问题,但我只发现了java.util.stream.stream .sorted()的大O复杂性,这一点也没有帮助,因为有两个不同的答案(第一个当然是部分错误的,因为arrays.sort并不总是O(n log n))。第二个呢?我还没找到证据。

  • 我正在使用Node.js开发后端项目,并打算实现产品排序功能。我研究了一些文章,有几篇文章说泡泡排序不是有效的。泡泡排序在我以前的项目中使用,我很惊讶为什么它是不好的。有人能解释一下为什么效率低下吗?如果您能用c编程或汇编命令来解释,将不胜感激。

  • 我有一个在< code>postgresql数据库上使用< code>typeorm的更新查询,如下所示,该查询频繁地在20个项目的列表上执行(每30秒一次)。大约需要。更新12秒,对我的极限来说已经很多了。 是否有可能在单个查询中执行这样的批量更新,而不是迭代其他项?如果是的话-怎么做? 和对于每个项目都是唯一的。