Обработка списочных типов с помощью Esqueleto

Из API:

Каждый построитель строк имеет емкость. Пока длина символьной последовательности, содержащейся в построителе строк, не превышает емкость, нет необходимости выделять новый внутренний буфер. Если внутренний буфер переполняется, он автоматически становится больше.

Всякий раз, когда вы добавляете что-то, есть проверка, чтобы убедиться, что обновленный StringBuilder не будет превышать его емкость, и если это произойдет , внутреннее хранилище StringBuilder изменяется:

int len = str.length();
int newCount = count + len;
if (newCount > value.length)
  expandCapacity(newCount);

Когда к нему добавляются данные, превышающие его емкость, он изменяется в соответствии со следующей формулой:

void expandCapacity(int minimumCapacity) {
int newCapacity = (value.length + 1) * 2;
    if (newCapacity < 0) {
        newCapacity = Integer.MAX_VALUE;
    } else if (minimumCapacity > newCapacity) {
    newCapacity = minimumCapacity;
}
    value = Arrays.copyOf(value, newCapacity);
}

Дополнительную информацию см. В файле src.zip, который поставляется вместе с JDK. (Над фрагментами, взятыми из 1.6 JDK)

144
задан dfeuer 11 July 2015 в 01:09
поделиться