Я предполагаю, что вы хотите перебрать все таблицы, и для каждой из таблиц перебирать свои столбцы, а также, я полагаю, что столбцы таблицы tableNamesMD.get(i)
являются columnNamesMD.get(i)
, в в этом случае ответ Костантина будет работать.
Но, я думаю, что дизайн естественно ошибочен. Так, вполне естественно, мы хотим перебрать все таблицы и обрабатывать некоторые данные, связанные с каждой таблицей, мы должны делать это объединение в объектно-ориентированном образом, а именно:
public interface Table {
String getName();
List<Column> getColumns();
}
public interface Column {
String getName();
}
И тогда код итерации будет выглядеть
List<Table> tables = ...;
for (Table table : tables) {
System.out.println(table.getName());
for (Column column : columns) {
System.out.println(column.getName());
}
}
Мы устранили связь между таблицей и ее столбцами с помощью индекса списка, а также для замены с Еогеаспом заявлением. Оба эти изменения значительно продвинулись в повышении удобочитаемости кода, что имеет много желательных побочных эффектов.
Также обратите внимание, что мы можем переписать это с помощью потока API как этот
tables.forEach(table -> {
System.out.println(table.getName());
table.getColumns().forEach(column -> System.out.println(column.getName()));
});
В общем, я бы сказал, что если что-то мыслится как субъект в объектно-ориентированном программировании, то он должен быть классом.
Используйте 'columnNamesMD.get (i)' вместо 'tableNamesMD.get (i)'. –
Вы должны, вероятно, перебирать вложенные ArrayList - columnNamesMD. tableNamesMD не вложен – Eran
Ваш tableNamesMD является arraylist строк, поэтому, если вы используете get (i) .size(), вы пытаетесь получить размер строки в позиции i. То, что вы, возможно, захотите проверить во втором цикле for, - это список columnNamesMD – Ricardo