gpt4 book ai didi

Java N 维数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:13:37 24 4
gpt4 key购买 nike

我需要能够拥有一个 n 维字段,其中 n 基于对构造函数的输入。但我什至不确定这是否可能。是吗?

最佳答案

快速解决方案:您可以使用一个非泛型 ArrayListArrayList 来近似它 ... 尽可能深入。然而,这可能会变得难以快速使用。

另一种需要更多工作的替代方法是使用底层平面数组表示来实现您自己的类型,您可以在其中计算内部索引,并为访问器方法提供可变参数。我不确定它是否完全可行,但可能值得一试......

粗略的例子(未经测试,没有溢出检查,错误处理等,但希望传达基本思想):

class NDimensionalArray {
private Object[] array; // internal representation of the N-dimensional array
private int[] dimensions; // dimensions of the array
private int[] multipliers; // used to calculate the index in the internal array

NDimensionalArray(int... dimensions) {
int arraySize = 1;

multipliers = new int[dimensions.length];
for (int idx = dimensions.length - 1; idx >= 0; idx--) {
multipliers[idx] = arraySize;
arraySize *= dimensions[idx];
}
array = new Object[arraySize];
this.dimensions = dimensions;
}
...
public Object get(int... indices) {
assert indices.length == dimensions.length;
int internalIndex = 0;

for (int idx = 0; idx < indices.length; idx++) {
internalIndex += indices[idx] * multipliers[idx];
}
return array[internalIndex];
}
...
}

关于Java N 维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4770926/

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