java как я могу распаковать список и добавить элементы в datatable один за другим? - PullRequest
1 голос
/ 24 апреля 2020

Добрый день всем! Вот как теперь выглядит мой код: (я сократил его)

У меня есть данные, которые можно заполнить, а затем использовать для визуализации на веб-сайте, написанном в Javascript

DataTable usd_table = DataTableBuilder
                .create("usd_final_sum")
                .withColumn(String.class,
                        "Line", new ArrayList<>())
                .withColumn(String.class,
                        "Date1", new ArrayList<>())
                .withColumn(String.class,
                        "Date2", new ArrayList<>())
                ... (95 rows more)
                .withColumn(String.class,
                        "Date97", new ArrayList<>())
                .build().get();

Затем я заполняю это:

        usd_table = usd_table.rows().addValues(cum_cash_list.get(0), 
cum_cash_list.get(1), 
    ....... (95 rows more), 
    cum_cash_list.get(98)).get();

Есть 98 строк при создании и 98 строк при заполнении .. Ужасно ..

Так что это работает, но это такой длинный код. Как я могу сократить его? cum_cash_list состоит из строковых значений

Может быть какой-то итератор списка или пока l oop, я не знаю ..

1 Ответ

0 голосов
/ 24 апреля 2020

Используйте for-l oop:

var builder = DataTableBuilder
                .create("usd_final_sum")
                .withColumn(String.class,
                        "Line", new ArrayList<>())
//Here numRows is 98 or however many rows you have
for (int i = 1; i <= numRows; i ++) {
  builder = builder.withColumn(String.class, "Date" + i, new ArrayList<>());
}

В конце l oop у строителя будут нужные вам столбцы. Затем вы можете сказать

DataTable usd_table = builder.build().get();

РЕДАКТИРОВАТЬ: Чтобы заполнить базу данных, вы можете просто снова использовать for-l oop. Я предполагаю, что метод addValues использует varargs, поэтому вы можете передать в массив:

//I don't know the return type of cum_cash_list.get(int), so I'm naming it Value
Value[] values = new Value[98/*or number of rows*/];
for (int i = 0; i < values.length; i ++) values[i] = cum_cash_list.get(i);
usd_table = usd_table.rows().addValues(values).get();

РЕДАКТИРОВАТЬ: этот var не является JS var, я просто не был уверен, является ли тип из строителя будет DataTableBuilder или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...