Supponiamo di disporre di una matrice multidimensionale e il numero di dimensioni è noto solo in fase di esecuzione. E supponiamo di avere un numero intero di indici.Come accedere a un array multidimensionale a livello di codice in Java?
Come applicare gli indici all'array per accedere all'elemento dell'array?
UPDATE
Supponiamo:
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
...
voglio prendere dell'elemento indirizzato dagli indici indices
da array
.
UPDATE 2
Ho scritto seguente codice sulla base di ricorsione: ci
1) sono metodi già pronti affidabili da JDK e/o:
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));
}
}
Le domande sono librerie famose per questo?
2) Stavo usando Object
. può essere evitato? posso creare/accedere a un array di dimensionalità variabile di tipo built-in o specifico? quanto è grande il guadagno dovuto all'utilizzo di Object
?
Potrebbe essere un po 'più specifico per favore, magari fornire uno snipplet di codice? – TimStefanHauschildt
Potete per favore fornire qualsiasi esempio. Capire – Kick
Vi suggerisco di leggere [questo] (http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html). – Djon