假設我們有多維數組,並且只在運行時才知道維數。假設我們有一個整數指數。如何以編程方式在Java中訪問多維數組?
如何申請指數數組所以要訪問數組的元素?
UPDATE
假設:
int [] indices = new int { 2, 7, 3, ... , 4}; // indices of some element
int X = indices.length; // number of dimensions
Object array = .... // multidimensional array with number of dimensions X
...
我想獲取從array
通過指數indices
解決的元素。
更新2
我寫了一個基於遞歸下面的代碼:
package tests;
import java.util.Arrays;
public class Try_Multidimensional {
private static int element;
public static int[] tail(int[] indices) {
return Arrays.copyOfRange(indices, 1, indices.length);
}
public static Object[] createArray(int ... sizes) {
Object[] ans = new Object[sizes[0]];
if(sizes.length == 1) {
for(int i=0; i<ans.length; ++i) {
ans[i] = element++;
}
}
else {
for(int i=0; i<ans.length; ++i) {
ans[i] = createArray(tail(sizes));
}
}
return ans;
}
public static Object accessElement(Object object, int ... indices) {
if(object instanceof Object[]) {
Object[] array = (Object[]) object;
return accessElement(array[indices[0]], tail(indices));
}
else {
return object;
}
}
public static void main(String[] args) {
element = 0;
Object array = createArray(4, 5, 12, 7);
System.out.println(accessElement(array, 0, 0, 0, 0));
System.out.println(accessElement(array, 0, 0, 0, 1));
System.out.println(accessElement(array, 1, 0, 10, 0));
try {
System.out.println(accessElement(array, 0, 5, 0, 1));
}
catch(Exception e) {
System.out.println(e.toString());
}
System.out.println(4*5*12*7-1);
System.out.println(accessElement(array, 3, 4, 11, 6));
}
}
的問題是:
1)是否有從JDK和/或任何可靠的現成方法這個着名的圖書館?
2)I用Object
。可以避免嗎?我可以創建/訪問內置或特定類型的變量維度數組嗎?由於使用Object
而獲得多少回報?
你能成爲一個更具體一點請,也許提供了一個代碼snipplet? – TimStefanHauschildt
您能否提供任何示例。瞭解 – Kick
我建議您閱讀[this](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/array.html)。 – Djon