1) ваш TableModel
не заполнен, я пропускаю много или требуются методы для JTable's
жизненного цикла, начиная с TableHeader
и т. Д.
2), поскольку существует множество моделей AbstactTableModel, основанных на HashMap,Я бы предложил возвращать тип массивов, реализованный в API напрямую
Vector<Vector<Object or String>> data;
String[][] or Object[][]
вместо
ArrayList<ArrayList<String>> data;
. Простое объяснение состоит в том, что XxxList возвращает столбец, а Vector или String [] возвращают Row
3) Я бы посоветовал использовать DefaultTableModel
напрямую, тогда вам никогда не придется решать дубликаты или пропущенные столбец / строку