java - 更改java中数组的偏移量

标签 java arrays

在 C 语言中,我们可以通过以下代码更改数组的偏移量

int arr1a[] = arr+3; 

这会将数组的基数更改 3 个索引。

在java中我们不能这样做。那么在 java 中解决这个问题的最佳实践是什么?

我们可以使用Arrays.copyOf(),但这会增加复杂性。

Array.copyOf的复杂度是 O(n)。在内部它使用 System.arraycopy ,其复杂度为 O(n)

最佳答案

如果您不想复制数组,只需保留一个 offset 变量并将其添加到需要的位置即可:

int[] arr = { 1,2,3,5,8,13,21,34 }

// View of array: 5,8,13,21
int offset = 3, len = 4;
for (int i = 0; i < len; i++)
    System.out.println(arr[i + offset]);

C中,数组不知道自己的大小,因此您必须自己跟踪它,但偏移更容易。
Java 中,数组知道自己的大小,但您必须跟踪所需的任何偏移量。
不管怎样,你必须自己做一些事情,只是其中的不同部分。这就是生活。

关于java - 更改java中数组的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33194632/

相关文章:

java - 编译器说变量尚未初始化

java - 是否可以使用 if else 条件 true 从一个表中获取另一个表?

java - Mac 操作系统上的 Windows 批处理文件相当于什么?

java - Eclipse 中的 Maven 启动配置

Java 库存项目。数组

java - 如何使用Protocol Buffers在内存中序列化数据?

ios - 从数组中删除重复数据

c - 为什么这个程序在返回指向局部静态变量的指针时会出现段错误?

javascript - 使用扩展将数组映射到对象

c++ - 在C++中初始化2D数组类并将其传递给函数