gpt4 book ai didi

java - 在 Java 中 : is where a way to create a subarray that will point to a portion of a bigger array?

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

学习Java,请温柔一点。理想情况下,我需要创建一个字节数组,该字节数组将指向更大数组的一部分:

byte[] big  = new byte[1000];

// C-style code starts
load(file,big);

byte[100] sub = big + 200;

// C-style code ends

我知道这在 Java 中是不可能的,我想到了两种解决方法,包括:

  1. 要么将 big 的一部分复制到 sub 中,然后遍历 big

  2. 或者编写自己的类,该类将引用 big + offset + size 并通过使用 big 作为实际底层的访问器方法实现“子数组”数据结构。

我要解决的任务是将文件加载到内存中,然后通过类获得对存储在文件中的记录的只读访问权限。速度是最重要的,因此理想情况下我想避免复制或访问方法。由于我正在学习 Java,所以我想坚持下去。

我还有其他选择吗?如果我没有很好地解释任务,请提出问题。

最佳答案

创建一个数组作为另一个数组的“ View ”在 Java 中是不可能的。但是你可以使用 java.nio.ByteBuffer ,这基本上是您在解决方法 #2 中建议的类(class)。例如:

ByteBuffer subBuf = ByteBuffer.wrap(big, 200, 100).slice().asReadOnlyBuffer();

不涉及复制(尽管有一些对象创建)。作为标准库类,我还假设 ByteBuffer 更有可能获得特殊待遇。 JVM 的“JIT”优化比自定义的优化。

关于java - 在 Java 中 : is where a way to create a subarray that will point to a portion of a bigger array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/618396/

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