gpt4 book ai didi

java - 如何在 Java 中声明无限大小/动态的字节数组?

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:03 24 4
gpt4 key购买 nike

我正在声明一个字节数组,它的大小对我来说是未知的,因为它不断更新,那么我如何声明无限大小/可变大小的字节数组?

最佳答案

您不能声明无限大的数组,因为那样需要无限大的内存。此外,所有分配调用都处理数字,而不是无限数量。

您可以分配一个按需调整大小的字节缓冲区。我相信最简单的选择是 ByteArrayOutputStream .

ByteBuffer 有一个 API 可以更轻松地操作缓冲区,但您必须自己构建调整大小功能。最简单的方法是分配一个新的、更大的数组,将旧内容复制进去,然后用新缓冲区替换旧缓冲区。

其他答案提到使用 List<Byte>某种。值得注意的是,如果你创建了一堆 new Byte()对象,您可以显着增加内存消耗。 Byte.valueOf回避了这个问题,但您必须确保在整个代码中始终使用它。如果你打算在很多地方使用这个列表,我可能会考虑写一个简单的 List实习所有元素的装饰器。例如:

public class InterningList extends AbstractList<Byte>
{
...
@Override
public boolean add(Byte b) {
return super.add(Byte.valueOf(b));
}
...
}

这不是一个完整的(甚至是经过测试的)示例,只是一些开始......

关于java - 如何在 Java 中声明无限大小/动态的字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13554302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com