Документация по модели JTable вводит в заблуждение в ее упрощенных объяснениях. Передача данных в конструктор таблицы почти всегда является ошибкой. Вы должны реализовать свою собственную модель таблицы, производную от AbstractTableModel, и передать этот объект модели в конструктор для таблицы.
Тогда ваша табличная модель может иметь личную переменную-член, такую как
public ArrayList<Person> employeeList = new ArrayList<Person>();
тогда вам просто нужно реализовать несколько методов, например
public int getRowCount() {
return emplyeeList.size();
}
и такие как
public Object getValueAt(int rowIndex, int columnIndex) {
Person p = employeeList.get(rowIndex);
switch (columnIndex) {
case 1:
return p.getName();
....
}
}
и т.д.
Это значительно упрощает ваше программирование, так как модель использует ваши естественные структуры данных для хранения данных.