在 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/