Как расширить List в цикле?

135
16 марта 2019, 04:10

Есть массив String, перевожу его в List, добавляю в цикл. Если в первом if срабатывает условие, то необходимо добавить в List символ. После цикл начинает проход уже с расширенного List'a. Почему-то если пытаюсь добавить символ, выкидывает ошибку. Почему?

String[] digits = String.valueOf(dividend).split("");
List<String> digitsList = Arrays.asList(digits); 
Integer mod;
for (int i = 0; i < digitsList.size(); i++) {
  String[] lines = result.toString().split("\\n");
  Integer previousReminder = lines[lines.length-1].length();
    reminder.append(digitsList.get(i));
    reminderNumber = Integer.parseInt(reminder.toString());
    mod = reminderNumber % divisor;
    if (reminderNumber < divisor && reminderNumber != previousReminder ) {
      reminderNumber = reminderNumber * 10;
      //digitsList.add("0"); выкидывает ошибку UnsupportedOperation
    }
    multiplyResult = reminderNumber / divisor * divisor;
    if (reminderNumber >= divisor || dividend < divisor && firstStep) {
      String lastReminder = String.format("%" + (i + 2) + "s", "_" + Integer.toString(reminderNumber));
        result.append(lastReminder).append("\n");
        if(dividend < divisor) {
          multiply = String.format("%" + (i + 3) + "d", multiplyResult);
        }else {
          multiply = String.format("%" + (i + 2) + "d", multiplyResult);
        }
        result.append(multiply).append("\n");
        Integer tab = lastReminder.length() - calculateDigit(multiplyResult);
        result.append(createDivisor(multiplyResult, tab)).append("\n");
        quotient.append(reminderNumber / divisor);
        reminder.replace(0, reminder.length(), Integer.toString(mod));
        reminderNumber = Integer.parseInt(reminder.toString());
        firstStep = false;
    }
}
Answer 1

Из документации:

Returns a fixed-size list backed by the specified array.

Обойти можно так:

List<String> digitsList = new ArrayList<>(Arrays.asList(digits));
Answer 2

Строка

List<String> digitsList = Arrays.asList(digits);

создает список фиксированного размера. Вернее она просто предоставляет доступ к массиву через интерфейс List<>.

А вам нужно создать свой список и добавить в него массив

List<String> digitsList = new ArrayList<>(Arrays.asList(digits));
READ ALSO
Поиск и возврат значения по ID (for json)

Поиск и возврат значения по ID (for json)

Что я делаю не так? У меня есть json файлВывод сделал, работает адекватно

160
Не находит тег p:focus jQuery

Не находит тег p:focus jQuery

У меня есть div с id="editor"У него задано contenteditable

142
Не выводит информацию из json

Не выводит информацию из json

Суть в том что делаю запрос на файл с поиском ID И просто он всегда отвечает False прошу помочь

166