快速的解决方案:你可以用非通用近似它
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]; } ...}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)