E
eclipseworker
Bekanntes Mitglied
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]}