Java 制作TableView项目的副本

Java 制作TableView项目的副本,java,list,javafx,Java,List,Javafx,我可能在这里遗漏了一些非常明显的东西,但我正在尝试从TableView获取项目,对它们进行一些更改,然后将它们导出到CSV文件 我不想对TableView数据进行任何更改。我只想对我创建的新列表进行更改。但是,我对下面的newList所做的更改也会更新TableView的模型 如何获取TableView数据的副本 我的代码: List<MyDTO> newList = myTableView.getItems(); newList.forEach(listItem -> li

我可能在这里遗漏了一些非常明显的东西,但我正在尝试从TableView获取项目,对它们进行一些更改,然后将它们导出到CSV文件

我不想对TableView数据进行任何更改。我只想对我创建的新列表进行更改。但是,我对下面的newList所做的更改也会更新TableView的模型

如何获取TableView数据的副本

我的代码:

List<MyDTO> newList = myTableView.getItems();

newList.forEach(listItem -> listItem.setName("New Name");

exportToCSV(newList);
List newList=myTableView.getItems();
newList.forEach(listItem->listItem.setName(“新名称”);
exportToCSV(新列表);

感谢您的帮助。

由于java中的对象总是通过引用来表示,因此没有简单的方法可以做到这一点。这意味着您必须创建一个新列表,并将每个对象从
myTableView.getItems()
复制到该列表中

如本文所述,您可以在此处使用克隆:

代码可能如下所示:

List<MyDTO> clonedList = new ArrayList<>();
myTableView.getItems().forEach(item -> {
    MyDTO dto = item.clone();
    clonedList.add(dto);
});
exportToCSV(clonedList);
List clonedList=new ArrayList();
myTableView.getItems().forEach(项目->{
MyDTO dto=item.clone();
克隆列表。添加(dto);
});
exportToCSV(克隆列表);

这回答了你的问题吗?如果回答了,你能接受吗?是的,这解决了我的问题,谢谢。我想要一份列表的深度副本,正如你所建议的,我开始在列表中逐项克隆。