Quote Originariamente inviata da fermat Visualizza il messaggio
questo il metodo che riempie la lista:
codice:
    public ArrayList<ArrayList<Record>> scanDir(File dir) throws IOException {
        ArrayList<ArrayList<Record>> list = new ArrayList<>();
        File[] files = dir.listFiles();
        Arrays.sort(files, new MyComparator());
        for (File file : files) {
            ArrayList<Record> records = new ArrayList<>();
            Record record = new Record(file.getName(), new Tika().detect(file), file.getAbsolutePath());
            records.add(record);
            list.add(records);
        }
        return list;
    }
Mi sfugge ora (perché non so di più di cosa fai) perché devi avere un ArrayList che contiene N ArrayList in cui ciascuno ha 1 Record.
Mi pare un tantino fumoso ....

Quote Originariamente inviata da fermat Visualizza il messaggio
codice:
                    ArrayList<ArrayList<Record>> list = utils.scanDir(dir);
                    list.stream().forEach((map) -> {
                        ((MyTableModel) table.getModel()).addRow(map.toArray());
                    });
quello che succede è che viene valorizzata solo la prima colonna.
penso che il problema sia l'override delmetodo toString().
ma come posso fare per mettere ogni campo nella colonna specifica??
No, non è tanto il toString.
Quel 'map' è ciascun ArrayList<Record> nel ArrayList principale. E quindi map.toArray() ti dà un array di 1 elemento contenente 1 Record e quindi stai aggiungendo una riga con un singolo oggetto come "colonna".

Se Record ha più proprietà e vuoi che ciascuna di queste vada in una colonna specifica, devi estrarre tu i dati e comporre una riga di N Object.


P.S. comunque, ad occhio, mi sembra che stai facendo cose un po' fumose, con generics "complessi" e tirando in ballo stream/lambda di Java 8 che probabilmente rendono meno chiaro il tutto.
Mio onesto parere, ovviamente.