java - 从某个索引通过引用传递数组

标签 java arrays reference

在 c 中,您可以通过引用从某个索引(比如 i)传递数组,只需传递 i-th 元素的地址。

现在我想知道是否以及如何创建一个类似的结构以在 Java 中工作。 我目前正在 java 中实现一个就地基数 4 fft,为此我只对初始数据数组的一部分进行递归调用。

假设我有一个数据数组 a= [1,2,3,4,5,6,7,8],我想进行 4 次调用,每次调用第 4 个 a 作为参数,以便我可以对 a 执行就地修改。

最佳答案

在 Java 中不能直接用一维数组来完成。

您可以使用多维数组来实现。

例如:

int[][] a = {{1,2},{3,4},{5,6},{7,8}};

现在你可以将 a[i] 传递给你的方法,它可以修改它的元素。

或者您可以使用 Arrays.asList() 创建数组的 List View 。然后您可以使用 subList() 将该 List 的部分传递给您的方法,并修改这些部分。这些修改将反射(reflect)在原始数组中。

例如:

public static void changeSubList(List<Integer> list) {
    list.set (0, 150);
}

public static void main (java.lang.String[] args)
{
    Integer[] array = {1,2,3,4,5,6,7,8};
    List<Integer> list = Arrays.asList (array);
    changeSubList(list.subList (0, 2));
    changeSubList(list.subList (2, 4));
    changeSubList(list.subList (4, 6));
    changeSubList(list.subList (6, 8));
    System.out.println (Arrays.toString (array));
}

输出:

[150, 2, 150, 4, 150, 6, 150, 8]

唯一的问题是您不能使用基元数组。

关于java - 从某个索引通过引用传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50507303/

相关文章:

c++ - 返回对 C++ 中动态数组元素的引用?

c++ - 函数返回的指针地址

java - 浏览器或 Docker 无法访问使用 SSL 的 Nexus Repository Manager 3

java - mysql.jdbc 异常超出数据类型 INTEGER 的有效范围

python - 寻找最小差异

reference - 为什么我不能从闭包中返回对外部变量的可变引用?

java - 在 Java 中缓存从输入流读取的图像的最佳实践

java - 一段奇怪的德尔福代码

python - 如何使用append()函数扩展Numpy数组类?

javascript - 在数组中创建计数元素的数组