Java 如何从TableView中删除大量选定行?

Java 如何从TableView中删除大量选定行?,java,javafx,tableview,Java,Javafx,Tableview,有TableView,假设有10000行。选择了几乎所有这些,并希望通过单击按钮删除它们。如何在没有JavaFXGUI延迟的情况下管理它 现在我得到了: ObservableList aLLinTable = tableView.getItems() selected = tableView.getSelectionModel().getSelectedItems() aLLinTable .removeAll(selected) 认为问题在于TableView

有TableView,假设有10000行。选择了几乎所有这些,并希望通过单击按钮删除它们。如何在没有JavaFXGUI延迟的情况下管理它

现在我得到了:

ObservableList aLLinTable = tableView.getItems()
               selected = tableView.getSelectionModel().getSelectedItems()

aLLinTable .removeAll(selected)
认为问题在于TableView-ObservableList集合中的项类型。对其进行更改会导致触发动作。此外,我正在从集合中删除大量对象,因此存在搜索/删除循环。 也许我应该用

ObservableList<Integer> selectedIndices = tableView.getSelectionModel().getSelectedIndices()
虽然还没有测试过,但它仍然可以在ObservableList collection Allinkable上使用


因此,也许可以复制/传送Allingable系列至。。ArrayList,将其设置为循环,然后在TableView上重新创建ObservableList和.setItems()。

答案是使用HashMap,使用适当的键从中删除对象,然后将map转换为ObservableList并将其设置为TableView.setItems()


它工作得很快。使用5000-10000行进行测试。

答案是使用HashMap,使用适当的键从中删除对象,然后将map转换为ObservableList,并将其设置为TableView.setItems()

它工作得很快。使用5000-10000行进行测试

for(Integer idx : selectedIndices) {
   aLLinTable.remove(idx.intValue())
}