Comparable[] ???????? so ein FUCK

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Comparable[] ??? so ein FUCK
ich hab hier ein echtes problem mit dem Comparable: mir leuchtet net ein wie ich da , wenn ich mir nen heap bastln will, ein fucking array of fucking integer zahlen reinkrieg.
Kann mir bitte mal jemand nen crashkurs geben ? ich lauf bei der klausur voll auf heul, nervenzusammenbruchkrieg


Das funktioniert nicht weil du wahrscheinlich int genommen hast, aber damit es als comparable erkannt wird, musst du Integer verwenden:


int[] x  = {5,7,78,64,23,8,9,51,21,4,7,6,3,1,8,10,9};
Integer[] z = new Integer[x.length];
for (int i = 0; i < x.length; i++){
	z[i] = new Integer(x[i]);
}
Sorting s = new Sorting(z);
s.heapSort();

hey juhu ich kann sogar mal was erklären :smiley:

int ist ein grundtyp und comparable nimmt nur objekte also musst du ein objekt der wrapper klasse von int erzeugen und das geht mit integer.


Was ist denn eine Wrapper Klasse?


kann mir aber trotzdem mal jemand erklaeren wozu comparable da is ? ich mein ints und andere grunddatentypen (ausser char) sind doch eh vergleichbar ? also wozu dann von hinten durch die brust erst n comparable array aufmachen um es dann eh erst mal (vor allem in ner schleife) mit integer aufzufuellen nixmehrblickt :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand: :wand:


das sind klassen die um die grundtypen rumgebaut werden (int, double,…), die brauchst du um ein Objekt von einem Grundtyp zu erzeugen. Java ist was Grundtypen betrifft nämlich nihct streng objektorientiert, wenns so wäre müsstest du statt

int i = 3;

ja immer

Integer i = new Integer(3);

o.ä. schreiben, deshalb muss man wenn man nen Grundtypen als Objekt braucht (wie für comparable) ne Wrapper Klasse verwenden.

@fred: bleib locker! das is halt objektorientierung, comparable vereinfacht einiges, du kannst einfach beliebige objekte vergleichen(für die comparable implementiert ist) ohne dir sorgen darüber zu machen was da jetzt wie verglichen wird.


es geht einfach drum, dass du z.b. sortierfunktionen einfach für comparable schreiben kannst und dann für alles verwendne kannst, von integer bis omas, ohne die funktionen ändern zu müssen. du musst nur einen wrapper dazwischenhängen.