Ich weiß, dass die Dimensionen von eines mehrdimensionalen Arrays mit entsprechend geschachtelten Schleifen ausgelesen werden können und ich habe sogar einen Code gefunden mit ich die Anzahl der Array-Dimensionen aus einem Objekt raus lesen kann, aber wie finde ich die einzelnen Größen der Einzelnen Layers?
Was ich bisher habe:
Ok was genau ich mir da erwarte weiß ich selbst noch nicht so, vermutlich für arr3 etwas wie so:
dim=[3], 0=[2, 2], 1=[2, 1, 3, 2]
Also einfach, dass die Liste bei 0 alle Längen raus bekomme welche welche ich bekommen würde durch
array[0].length, array[1].length usw.
unter 1
alle Werte die wir mit array[0][0].length, array[0][1].length, ..., array[0][n].length, ...., array[m][n].length
unter 2 alle Werte von
array[0][0][0].length, array[0][0][1].length, ..., array[0][0][n].length,array[0][1][0].length, ...., array[m][n][o].length
usw.
Meine Momentane Ausgabe ist etwas buckig, nur die Dimesionszahl stimmt:
Außerdem scheint der Code primitiven Datentypen Probleme zu haben, eine Ahnung warum?
Was ich bisher habe:
Java:
import java.util.*;
public class Test {
public static HashMap<String, List<Integer>> getNumberOfDimensions(Object array) {
Class<?> type=array.getClass();
HashMap<String, List<Integer>> ret=new HashMap<>();
int dim=0;
List<Integer> addDim=new ArrayList<>();
Object temp=array;
Object temp2;
while (null!=type.getComponentType()) {
for(int i=0; i<((Object[])temp).length; i++){
temp2=((Object[])temp)[i];
if(null!=temp2.getClass().getComponentType()){
addDim.add(((Object[])temp2).length);
}
}
ret.put(""+dim, addDim);
addDim=new ArrayList<>();
type=type.getComponentType();
dim++;
}
List<Integer> dimL=new ArrayList<>();
dimL.add(dim);
ret.put("dim", dimL);
return ret;
}
public static void main(String[] args) {
Integer[][][] arr3={{{1, 2}, {3}}, {{4, 5, 6}, {7, 8}}};
Integer[][] arr2={{1, 2, 3}, {1, 2, 3}};
Integer[][][][] arr4={{{{1}, {2}}, {{3}}}, {{{1}, {2}}}};
Integer arr0=1;
System.out.println(getNumberOfDimensions(arr3));
System.out.println(getNumberOfDimensions(arr2));
System.out.println(getNumberOfDimensions(arr4));
System.out.println(getNumberOfDimensions(arr0));
}
}
dim=[3], 0=[2, 2], 1=[2, 1, 3, 2]
Also einfach, dass die Liste bei 0 alle Längen raus bekomme welche welche ich bekommen würde durch
array[0].length, array[1].length usw.
unter 1
alle Werte die wir mit array[0][0].length, array[0][1].length, ..., array[0][n].length, ...., array[m][n].length
unter 2 alle Werte von
array[0][0][0].length, array[0][0][1].length, ..., array[0][0][n].length,array[0][1][0].length, ...., array[m][n][o].length
usw.
Meine Momentane Ausgabe ist etwas buckig, nur die Dimesionszahl stimmt:
Code:
{0=[2, 2], 1=[2, 2], 2=[2, 2], dim=[3]}
{0=[3, 3], 1=[3, 3], dim=[2]}
{0=[2, 1], 1=[2, 1], 2=[2, 1], 3=[2, 1], dim=[4]}
{dim=[0]}