如何在Java中获取数组的子数组,而无需复制数据?

2022-08-31 20:28:23

我有一些类库,处理我的数据,这些数据正在被读入缓冲区。是否有可能以某种方式避免一次又一次地复制数组,将部分数据越来越深入地传递到处理方法中?嗯,这听起来很奇怪,但是在我的特殊情况下,有一个特殊的编写器,它将数据划分为块,并将它们分别写入不同的位置,因此它只是执行System.arraycopy,获取它需要的东西并调用底层编写器,并使用新的子数组。这种情况发生了很多次。重构此类代码的最佳方法是什么?


答案 1
Arrays.asList(array).subList(x, y).

此方法不会给你一个数组,而是一个更灵活的数组。List


答案 2

Java 中的许多类都接受数组的子集作为参数。例如 Writer.write(char cbuf[], int off, int len).也许这已经足以满足您的使用案例。