public void setLength(int newLength) {
if (newLength < 0) {
throw new StringIndexOutOfBoundsException(newLength);
}
ensureCapacityInternal(newLength);
if (count < newLength) {
if (isLatin1()) {
StringLatin1.fillNull(value, count, newLength);
} else {
StringUTF16.fillNull(value, count, newLength);
}
} else if (count > newLength) {
maybeLatin1 = true;
}
count = newLength;
}
public AbstractStringBuilder delete(int start, int end) {
int count = this.count;
if (end > count) {
end = count;
}
Preconditions.checkFromToIndex(start, end, count, Preconditions.SIOOBE_FORMATTER);
int len = end - start;
if (len > 0) {
shift(end, -len);
this.count = count - len;
maybeLatin1 = true;
}
return this;
}
Измерить например в комфортности работы браузера.
PARTITION BY HASH(urlId)
PARTITIONS ...;
ensureCapacityInternal(..)
Для меня - сама тема исследования странная. И я не помню когда я вообще использовал метод setLength. Может это такой редкий кейс что и никому он не интересен.
Кстати я не согласен с обнулением кумулятивной строки. Уж если-бы я делал генератор строк под нагрузкой - то я-бы исследовал 95-й процентиль от длины моих строк. И я уверен что это был-бы не ноль а какая-от вменяемая средняя длина. Например 30 или 50 символов. Кому нужен СтрингБилдер который стартует с нуля? Ясен пень что он все равно будет экстендится. И ясен пень не по 1 символу. Там алгоритм оперирует более крупными кусками. Так дайте ему сразу кусок!