[JAVA] int[][] to Integer[][]

Kann man mit einfachem Wege ohnen großen Aufwand ein zweidimensoinales int-Feld int ein zweidimensoinales Integer-Feld umwandeln?

Hab hier nämlich eine Methode:
Code:
public static <Data>String ArrayToString(Data[][] o) {
	String result = "";
	for (int i = 0; i < o.length; i++) {
		for (int j = 0; j < o[i].length; j++) {
			result += o[i][j];
			if (!(i == o.length - 2 && j == o[i].length - 2)) {
				result += "; ";
			} // if
		} // forJ
		result += "\n";
	} // forI
	return result;
}// cToString()

Die ich nur so verwneden kann:
Code:
ArraysToStringUtil.<Integer>ArrayToString((Integer[][]) b);
Wobei b ein int[][] Feld ist.


Die Fehlermeldung ist:
Cannot cast from int[][] to Integer[][]
 
Meiner Meinung nach gibt es keine Funktion, die den Datentyp von Arrays ändern kann. So eine Funktion von int zu Integer liese sich aber durch zwei Schleifen relativ einfach implementieren, aber das find ich ein wenig rechenaufwändig, nur für die ausgabe das ganze array umzuschreiben
musst du denn die funktion arraytostring benutzen? eine ähnliche funktion für int zu schreiben wär ja auch nich das problem.
Mfg ThePhil
 
Das ist nicht dasselbe. int ist ein primitiver Datentyp und Integer ist ein Objekt, das heißt Integer hat Attribute und Operationen. Belies dich mal in objektorientierter Programmierung.
Mfg ThePhil
 
Original von Inmice
Was soll das bringen bleibt doch eh das selbe?

"Integer" braucht viel mehr Speicherplatz als ein "int". Deshalb kannst du ein "int"-array nicht einfach als ein "Integer"-array behandeln, da z.B. das zweite Element im "Integer"-array mit dem 5. Element im "int"-array zusammenfallen würde und du auf die falschen Speicherstellen zugreifen würdest.

|.......|.......|.......|.......| Integer
|..|..|..|..|..|..|..|..|..|..| int

ich frage mich allerdings, wieso du nicht einfach den betreffenden int aus dem array holst und dann in einen "Integer" umwandelst. Wenn du diese Operation nicht gerade 1000 mal pro sekunde ausführen musst, wird das keine probleme geben. Ansonsten verstehe ich auch nicht, was du gegen die Methode mit den Schleifen hast, das ist mit einer komplexität von O(n) das schnellste, wie du die daten vom einen feld ins andere kopieren kannst.
 
Danke für die Antworten.(sry für späte Antwort, war ne Zeit lang nicht da!)

hab es jetzt einfach so gemacht:

Code:
public class ArraysUtil {
	
	public static <Data> String ArrayToString(Data[][] o) {
		String result = "[";
		for (int i = 0; i < o.length; i++) {
			result += Arrays.toString(o[i]);
			if(i!=o.length-1) {
				result+=", ";
			}
		} // forI
		return result+"]";
	}// cToString()
	
	public static Integer[][] intToInteger(int[][] a) {
		Integer[][] result = new Integer[a.length][a[0].length];
		for (int i = 0; i < a.length; i++) {
			for (int j = 0; j < a[i].length; j++) {
				result[i][j] = a[i][j];
			}
		}
		return result;
	}
	
}

MrSpider
 
Zurück
Oben