Angenommen, wir haben ein mehrdimensionales Array und die Anzahl der Dimensionen ist nur zur Laufzeit bekannt. Und angenommen, wir haben eine ganzzahlige Anzahl von Indizes.Wie programmgesteuert in Java auf mehrdimensionales Array zugreifen?
Wie Indizes auf das Array angewendet werden, um auf das Array-Element zuzugreifen?
UPDATE
Angenommen:
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
...
Ich möchte das Element durch Indizes indices
von array
adressiert holen.
UPDATE 2
ich folgenden Code geschrieben, basierend auf Rekursion:
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));
}
}
Die Fragen sind:
1) gibt es keine zuverlässigen fertige Methoden von JDK und/oder berühmte Bibliotheken dafür?
2) Ich habe Object
verwendet. Kann es vermieden werden? Kann ich ein Array mit variabler Dimensionalität mit eingebautem oder spezifischem Typ erstellen/darauf zugreifen? Wie groß ist eine Auszahlung aufgrund der Verwendung von Object
?
Könnten Sie ein wenig konkreter sein bitte, vielleicht einen Code snipplet? – TimStefanHauschildt
Kannst du bitte irgendein Beispiel geben.Kann verstehen – Kick
Ich schlage vor, Sie lesen [this] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html). – Djon