Сделайте копию элементов TableView - PullRequest
0 голосов
/ 16 апреля 2020

Возможно, мне здесь не хватает чего-то очень очевидного, но я пытаюсь получить элементы из TableView, внести в них некоторые изменения и экспортировать их в файл CSV.

Я не хочу внести любые изменения в данные TableView. Я только хочу внести изменения в новый список, который я создал. Однако изменения, внесенные в newList ниже, также обновляют модель TableView.

Как получить копию данных TableView?

Мой код:

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

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

exportToCSV(newList);

Спасибо за любую помощь.

1 Ответ

1 голос
/ 16 апреля 2020

Нет простого способа сделать это, поскольку объекты в java всегда представлены ссылкой. Это означает, что вам нужно создать новый список и скопировать каждый объект из myTableView.getItems() в этот список.

Вы можете использовать клонирование здесь, как описано в этом посте: ссылка

код может выглядеть так:

List<MyDTO> clonedList = new ArrayList<>();
myTableView.getItems().forEach(item -> {
    MyDTO dto = item.clone();
    clonedList.add(dto);
});
exportToCSV(clonedList);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...