gpt4 book ai didi

java - 通过索引引用另一个数组

转载 作者:行者123 更新时间:2023-12-01 16:25:18 24 4
gpt4 key购买 nike

是否可以通过 Java 中的索引以某种方式获取一个数组的引用,例如下面的伪代码:

array1 = [1,2,3,4,5,6,7,8] // size 8
array2 = [] // size 4
for(i=0 ; i<4 ; i ++)
{
array2[i] = reference to array1[random(0,3)]
}

例如随机数是 3 0 4 6

array2[0] = array1[3]
array2[1] = array1[0]

如果将 array2[0] 更改为 99,则 array1[3]= 99 也会如此。

最佳答案

这并不完全可能,但你可以伪造它:

class Reference {

private Object value;

public Reference(Object value) {
this.value = value;
}

public Object getValue() {
return value;
}

public void setValue(Object value) {
this.value = value;
}

@Override
public String toString() {
return value.toString();
}

public static Reference[] ofInts(int[] items) {
Reference[] ret = new Reference[items.length];
for(int i = 0; i < items.length; ++i) {
ret[i] = new Reference(items[i]);
}
return ret;
}
}

然后你可以像这样使用它:

int array1[] = new int[] {1,2,3,4,5,6,7,8};
Reference refArray1[] = Reference.ofInts(array1);

final int arr2Size = 4;
Reference refArray2[] = new Reference[arr2Size];
Random rand = new Random();

for(int i = 0; i < arr2Size; ++i) {
int index = rand.nextInt(array1.length);
refArray2[i] = refArray1[index];
}

System.out.println(Arrays.toString(refArray1));
System.out.println(Arrays.toString(refArray2));
System.out.println("---");

refArray2[0].setValue(99); // set reference value

System.out.println(Arrays.toString(refArray1));
System.out.println(Arrays.toString(refArray2));

示例输出:

[1, 2, 3, 4, 5, 6, 7, 8]
[4, 6, 3, 3]
---
[1, 2, 3, 99, 5, 6, 7, 8]
[99, 6, 3, 3]

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com