Convert List<Map<String, Object>> to String[][]

Viewed 96

I have a List<Map<String, Object>> data.

public List<Map<String, Object>> selectAll(String tableName) throws SQLException{
    MapListHandler mapListHandler = new MapListHandler();
    QueryRunner queryRunner = new QueryRunner();
    List<Map<String, Object>> list = queryRunner.query(DBConnection.getConnection(), SELECT + tableName, mapListHandler);
    System.out.println(list);
    return list;
}

Then I get this

List<Map<String, Object>> data = databaseMetadata.selectAll(buttonElements.getTables_in_migrate_schema());

And I need to add it to JTable as rowData so it has to be String[][].

I tried to make something like this.

JTable jTable = new JTable((Object[][]) data.toArray(), fields.toArray());

Can someone please say me how to convert? Thanks in advance!

1 Answers

As you already have the field's name, so just collect every map's value of list and collect as 2D Object array. You can use Stream API this way

Object[][] objList = data.stream().map(m -> m.values().toArray()).toArray(Object[][]::new);
Related