Какой класс Java подойдет как аналог массива byte[] увеличиваемой длины?

Компьютеры программирование java

Интересует нечто вроде такого функцианала:
class BytesArray {

private int maxLen = 255;
private int len = 0;
private byte[] arr;

public BytesArray() {
arr = new byte[maxLen];
}
public BytesArray(int startCount) {
maxLen = startCount;
arr = new byte[maxLen];
}

private more() {
maxLen *= 2;
byte[] newArr = new byte[maxLen];
for(int i = 0; i < len; i++) {
newArr[i] = arr[i];
}
}
public void add(byte b) {
if(len >= maxLen - 1) more();
arr[++len] = b;
}
public void addAll(byte[] b) {
while(len >= maxLen - b.length) more();
for(int i = 0; i < b.length; i++) {
arr[len + i] = b[i];
}
len += b.len;
}
public int length() {
return len;
}
public byte[] array() throws IndexOutOfBoundsException, ArrayStoreException, NullPointerException {
byte[] retArr = new byte[len];
System.arraycopy(arr, 0, retArr, 0, len);
return retArr;
}
} // Написано "на коленке". И вообще извиняюсь за "нубость" вопроса.

Примечание:
Спасибо за полноту изложения. в) - самое оно, его я и запамятовал.
Ответы:
а) "увеличиваемой длины" сразу намекает на использование ArrayList<Byte>, но этот подход может быть "тяжелым", например, когда массивы большие (большие накладные расходы), или когда специфичные для списка функции не будут использоваться (например, последовательно записать байты и получить их в виде массива целиком для дальнейших манипуляций)
б) Написать "на коленке" требуемый функционал по динамическому расширению диапазона, но этот подход неоптимален в виду одновременного хранения старой и новой копии массива (например, если массив будет оооочень большой - используемая память увеличится вдвое). Кстати, вместо  byte[] newArr = new byte[maxLen]; for(int i = 0; i < len; i++)... - Arrays.copyOf вам в помощь
в) Не изобретать велосипед, а использовать ByteArrayOutputStream


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.