По умолчанию ByteArrayOutputStream кажется довольно расточительной реализацией, и мне было интересно, есть ли какая-то конкретная причина для этого. Сначала он сохраняет 1 фиксированный массив в бэкэнд. Если он заполнен, он создает новый массив и копирует в него старый массив (больше памяти и больше накладных расходов). Затем, если вы делаете toByteArray(), он на самом деле снова копирует массив.Недостатки фрагментированных массивов для хранения динамических байтов
Байт-буферы хороши, но также фиксированы по размеру, они просто предлагают несколько в одном массиве, не более того.
Мне было интересно, было бы интересно создать класс (или, если он уже существует, укажите мне его), который использует один или несколько массивов поддержки. Вместо дублирования массива каждый раз для расширения он просто добавляет новый массив поддержки. Для чтения вы можете легко создать интерфейс, такой как входной поток, в то время как вы можете открыть интерфейс, такой как выходной поток для записи
Любая обратная связь о том, существует ли такая вещь, а если нет: почему? Есть ли у меня недостаток, который я не вижу?
«Мне было интересно, если это было бы интересно создать класс ...» - Да, это было бы интересно. Сходите! –