当前位置:  开发笔记 > 编程语言 > 正文

在Java中:在哪里创建一个指向更大数组的一部分的子数组?

如何解决《在Java中:在哪里创建一个指向更大数组的一部分的子数组?》经验,为你挑选了1个好方法。

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

byte[] big  = new byte[1000];

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

byte[100] sub = big + 200; 

// C-style code ends

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

    要么通过大的复制部分迭代.

    或者编写自己的类,它将引用big + offset + size并通过使用big作为实际底层数据结构的访问器方法实现"子阵列" .

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

我还有其他选择吗?如果我没有充分解释这项任务,请提出问题.



1> 小智..:

在Java中,不可能将数组创建为其他数组的"视图".但是你可以使用java.nio.ByteBuffer,它基本上就是你在解决方案#2中建议的类.例如:

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

不涉及复制(虽然创建了一些对象).作为一个标准的库类,我还假设ByteBuffer更有可能接受特殊处理.JVM的"JIT"优化比自定义优化.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有