【发布时间】:2014-04-22 16:03:49
【问题描述】:
我有一个字节缓冲区,我放了 Ints、Chars 等。 因为我不知道我需要多少空间,所以我想动态增长字节缓冲区。这是怎么做到的?
示例: - 我有 2 个字节的 Bytebuffer - 我在字节缓冲区中添加了一个字符(现在字节缓冲区已满) - 我喜欢通过将字节缓冲区扩展为 4 个字节来向字节缓冲区添加一个整数。我无法在开始时分配 6 个字节的字节缓冲区。
ByteBuffer byteBuffer = ByteBuffer.allocate(2);
byteBuffer.putChar('a');
byteBuffer.putInt(1);
我印象深刻,有多少人正在处理我几分钟前的问题。非常感谢大家,也感谢 Stackoverflow,这是一个很棒的平台!
你们都问,我在做什么。所以我试着在这里解释一下。 我的用例: 我将结构化数据表示为 javaobjects (javaclasses),我想将这些数据存储到数据库中并从数据库中读取。阅读速度应该很快。 到目前为止我做了什么:
java 序列化和反序列化并将其存储在一个 blob 中 -> 运行良好但速度太慢。
尝试了几个 3rd 方序列化程序,如 kryo(非常好),但在我的 案例(机器人)。
我的新策略 :-) : 我自己对我的班级进行外化。为此,我想将我的类顺序的整个数据构造为字节数组。这可能很慢。然后我将字节数组存储到我的数据库中的一个 blob 中。阅读时,我想一次读取字节数组(字节数组约为 10k)。 (我会有很多)。然后解析字节数组以提取结构化数据。
我认为使用字节缓冲区非常适合这样做,因为 putX 和 readX 之类的方法? (X 表示字符、浮点数、整数)
【问题讨论】:
-
为什么不使用不同的数据结构呢?如果您想要动态重新分配,为什么不使用链表?
-
为什么不能分配容量为 4 或 1024 字节或 1 MB 的 ByteBuffer?
-
顺便说一句 putChar() 不经常使用,可能有更好的方法来编写字符,具体取决于您这样做的原因。
-
你的答案真的没有帮助:-)。为什么我要求这个,我可以从一开始就分配 1024。
-
@user1344545 我们正试图了解您为什么要这样做。如果您想要一个替代解决方案,知道什么是有用的会很有用。
标签: java bytebuffer