Javafx 保留一份可观察列表的副本

Javafx 保留一份可观察列表的副本,javafx,observablelist,Javafx,Observablelist,我正在尝试在表视图上创建撤消重做功能。为此,我尝试制作一份可观察列表(表视图数据)的副本,并将其作为原始数据进行维护,以供进一步参考 ObservableList<T> tableData = FXCollections.ObservableArrayList(); table.setItems(tableData); ObservableList<T> originalList = FXCollections.observableArrayLis

我正在尝试在表视图上创建撤消重做功能。为此,我尝试制作一份可观察列表(表视图数据)的副本,并将其作为原始数据进行维护,以供进一步参考

    ObservableList<T> tableData = FXCollections.ObservableArrayList();
    table.setItems(tableData);
    ObservableList<T> originalList = FXCollections.observableArrayList(tableData);

    lblUndo.setOnMouseClicked((evt) -> {
            System.out.println("undo click == " + (originalList==data));
            System.out.println("undo click equals " + originalList.equals(data));
            table.setItems(originalList);
    });

    lblRedo.setOnMouseClicked((evt) -> {
            System.out.println("redo click " + originalList.equals(data));
            table.setItems(tableData);
    });
如何维护不应更新的原始副本


PS:我只是将可观察列表
tableData
作为输入,无论我从
tableData
中获得值的来源是什么,我都不能使用相同的来源来填充
originalList

原始列表
originalList
引用
tableData
。要实现您想要的,您必须克隆其中一个列表,使其成为一个单独的实例。@hotzst the say“创建一个新的可观察数组列表,并向其中添加集合col的内容”。这对我来说很好。你能为我创建并发布一个吗?@James_D每当我在表格中做任何更改时,两个列表都会更新。我希望一个列表包含原始数据,另一个列表包含更新的数据。您需要在问题中添加一个。
undo click == false
undo click equals true
redo click true