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

时间:2018-05-24 10:42:51

标签: java arrays reference

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

现在我想知道是否&我如何创建一个类似的结构来使用Java。 我目前正在java中实现一个inplace radix-4 fft,我只对部分初始数据数组进行递归调用。

所以说我有一个数据数组a= [1,2,3,4,5,6,7,8],我希望进行4次调用,每个调用接收a的第4个作为参数,这样我就可以对a执行就地修改。

3 个答案:

答案 0 :(得分:2)

直接使用1维数组无法在Java中完成。

你可以使用多维数组来完成它。

例如:

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

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

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

例如:

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]

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

答案 1 :(得分:1)

有一个方法将数组和起始和结束索引作为参数。这是一个非常常见的习惯用法,但当然它希望该方法表现良好,而不是在其允许的索引之外读取。

它简单,高效且几乎是Java中唯一的现实方式。所有你不得不担心的是破坏数组的错误方法,但这不应该发生吗?

答案 2 :(得分:0)

你无法真正做到这一点#34;开箱即用。

你可以创建一个&#34;数组视图&#34;只允许访问特定范围的类。

但是你不能在不分配内存和复制条目的情况下创建子数组。