Как быстрее получить данные из TableModel в Java?

Я хочу экспортировать данные из JTable в файл в формате CSV. Для чтения всех данных в TableModel я использовал это:

for (int row = 0; row < rowCount; row++) {
  for (int col = 0; col < columnCount; col++) {
    csvData += tableModel.getValueAt(row, col);
    csvData += col + 1 < columnCount ? "," : "";
  }
  csvData += "\r\n";
}

Но для большого набора данных процесс слишком медленный. И я думаю, что причина не в самом цикле, а в медленном методе getValueAt.

Поэтому я спрашиваю, есть ли более быстрый способ получить данные из TableModel?


person Daniel Silva    schedule 07.09.2015    source источник
comment
Используйте StringBuilder, а не строку.   -  person Hovercraft Full Of Eels    schedule 07.09.2015
comment
Или, если вы используете Java 8, StringJoiner   -  person MadProgrammer    schedule 07.09.2015
comment
Вы также можете рассмотреть возможность сохранения значений в вашей реализации TableModel, которая более эффективна для ваших нужд.   -  person MadProgrammer    schedule 07.09.2015
comment
Не создавайте одну большую строку перед сохранением данных в файл. Запишите каждую строку данных отдельно, тогда у вас будет гораздо меньше требований к памяти, и вы сможете обрабатывать таблицы любого размера.   -  person camickr    schedule 07.09.2015
comment
Вот и все. StringBuilder невероятно быстрее, чем конкатенация строк. Извините за дублированный вопрос. Мой взгляд на проблему был неверным. Я не знал о проблеме с методом конкатенации. Виноват. С наилучшими пожеланиями.   -  person Daniel Silva    schedule 07.09.2015