Java N维数组

Java N维数组,第1张

Java N维数组

快速的解决方案:你可以用非通用近似它

ArrayList
ArrayList
的…要深,因为你需要。但是,使用快速可能会很尴尬。

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

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

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];  }  ...}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5428544.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存