Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
folgendes Problem. Ich fülle eine LinkedList mit einem selbst erstellten Datentyp. Wie kann ich nun die Liste nach einem bestimmten Merkmal sortieren?
Code:
List<Datensatz> daten = new LinkedList<Datensatz>(); // Datenbehälter.
Ein Datensatz sieht so aus...
Code:
public class Datensatz extends Player {
private int Id, Econ, Fleet, Tech, Exp, Acc;
private double Lvl;
public void setEcon(int x) { Econ=x; }
public void setFleet(int x) { Fleet=x; }
public void setTech(int x) { Tech=x; }
public void setExp(int x) { Exp=x; }
public void setAcc(int x) { Acc=x; }
public void setLvl(double l) { Lvl=l; }
public int getEcon() { return Econ; }
public int getFleet() { return Fleet; }
public int getTech() { return Tech; }
public int getExp() { return Exp; }
public int getAcc() { return Acc; }
public double getLvl() { return Lvl; }
}
Wie erreiche ich, dass die Liste beispielsweise nach dem int-Wert Econ sortiert wird? Wenn es möglich ist würde ich gerne wissen, wie man das auf- sowie auch absteigend sortieren kann.
Tja erm... ist ja gut und schön was in den Lehrbüchern steht, jedoch bezieht sich das dort eher auf die triviale Sortierung von Strings. Und wie sieht das nun mit meinem selbst gebastelten Datentyp aus? Wie kann ich dem klar machen, dass der das nach Econ und nicht nach Fleet oder weiß der Geier sortieren soll?!
Und nebenbei Mr. SlaterB. Wir sind hier im Anfänger-Forum. Da stellt man halt solche Fragen. Deine herablassende Art gegenüber anderen kannst du mal ganz schnell knicken.
> Und wie sieht das nun mit meinem selbst gebastelten Datentyp aus?
Tja erm.. genau diese Fragen werden in Lehrbüchern auch so genau erklärt wie du es hier kaum finden wirst.
(natürlich nicht für deinen konktreten Fall, man muss also selber nachdenken, falls ich das ganz neutral und nicht überheblich erwähnen darf)
zudem finden sich dort die Grundlagen, mit denen man höhere eigene Sortierungen überhaupt erst anfangen kann
aber ich habe schon verstanden, dir reichen in Zukunft also kompetente Antworten wie die vom Gast weiter oben
Ich habe gesucht... anscheinend nicht gründlich genug. Jedoch werde ich jetzt noch etwas mehr suchen. Das was du mir da zeigst ist selbstgebastelter Mist. Java bietet diese Sortierung schon von Haus aus an. Wozu dann noch selbst in der Liste umherwerkeln?!
Das was du mir da zeigst ist selbstgebastelter Mist. Java bietet diese Sortierung schon von Haus aus an. Wozu dann noch selbst in der Liste umherwerkeln?!
Das stimmt. Sowas habe ich im Studium gehabt. Select Sort, Bubble Sort... der ganze Mist von Grund auf. Das einzige, was uns der (und das meine ich wirklich ernst) kompetente Prof nicht beigebracht hat war, wie wir die Implementierung durch Java vollziehen. Wozu die Glühbirne nochmals erfinden?!
In diesem Sinne, ich versuche mein bestes und hoffe, dass ich das mit dem für mich neuen Java-Code hinbekomme.
Danke dir nochmal dafür.
Das stimmt. Sowas habe ich im Studium gehabt. Select Sort, Bubble Sort... der ganze Mist von Grund auf. Das einzige, was uns der (und das meine ich wirklich ernst) kompetente Prof nicht beigebracht hat war, wie wir die Implementierung durch Java vollziehen. Wozu die Glühbirne nochmals erfinden?!
Vielleicht hat der Prof. die Fähigkeit zu lesen und Engagement zu zeigen vorausgesetzt. Oder Du hast einfach den Unterschied zwischen Studium und Programmier-Ausbildung nicht verstanden.
Oh, jetzt kommen wieder diese neunmalklugen Bemerkungen von Leuten die anscheinend alles besser machen und alles besser können. Sowas braucht dieses Forum noch! Schön, dass du endlich da bist, byto.
Wo ist den nun genau dein Problem?
Interface Comparable Implementieren, dann methode compareTo implemetieren.
Dann in deiner Klasse eine Methode schreiben, die das Kriterium setzt. Fertig.
Oh, jetzt kommen wieder diese neunmalklugen Bemerkungen von Leuten die anscheinend alles besser machen und alles besser können. Sowas braucht dieses Forum noch! Schön, dass du endlich da bist, byto.
Einem Anfänger ist es doch gestattet "blöde" Fragen zustellen.
Wenn man hier im Forum keinen Sourcecode schreiben will,
sollte man einem Anfänger die richtigen Stichworte zum Google geben. Ist zwischenzeitlich (Comparator) geschehen.
ein Link zur richtigen Seite in einem Buch, in der ca 100x Comparator steht (sowie alle anderen Stichworte, Erklärungen, Beispiele und was immer man dazu brauchen könnte), reicht nicht?
Also ein Forum ist doch dazu da, auf konkrete Fragen konkrete Antworten zu liefern. Ein Verweis auf irgendein Buch zu liefern ist deswegen ziemlich ignorant, denn in Büchern wird die Materie allgemein erklärt. Und wenn man so will kann man auf jede einzelne Frage antworten, "Ließ ein Buch!". Wie bereits gesagt ist das nicht Sinn und Zweck eines Forums. Würde ich die Antwort bereits in einem Buch gefunden haben, oder danach in einem Buch suchen, würde ich nicht posten. Zudem ist eine Grundeigenschaft jedes Menschen die Bequemlichkeit. Durch eine Frage in einem Forum hofft man, nicht selbst nach der Antwort suchen zu müssen. Und sei es nur teilweise. Und wer sich davon nicht überzeugen lassen möchte kann seinen Standpunkt gerne in einem philosophischen Forum diskutieren.
Also ein Forum ist doch dazu da, auf konkrete Fragen konkrete Antworten zu liefern. Ein Verweis auf irgendein Buch zu liefern ist deswegen ziemlich ignorant, denn in Büchern wird die Materie allgemein erklärt. Und wenn man so will kann man auf jede einzelne Frage antworten, "Ließ ein Buch!". Wie bereits gesagt ist das nicht Sinn und Zweck eines Forums. Würde ich die Antwort bereits in einem Buch gefunden haben, oder danach in einem Buch suchen, würde ich nicht posten. Zudem ist eine Grundeigenschaft jedes Menschen die Bequemlichkeit. Durch eine Frage in einem Forum hofft man, nicht selbst nach der Antwort suchen zu müssen. Und sei es nur teilweise. Und wer sich davon nicht überzeugen lassen möchte kann seinen Standpunkt gerne in einem philosophischen Forum diskutieren.
Die Leute, die Dir hier (zu) helfen (versuchen), waren sicherlich nicht zu bequem, die Bücher zu lesen und die Grundlagen zu lernen.
Wenn Du hier Musterlösungen auf dem Präsentierteller erwartest, bist Du auf dem falschen Dampfer.
Die Leute, die Dir hier (zu) helfen (versuchen), waren sicherlich nicht zu bequem, die Bücher zu lesen und die Grundlagen zu lernen.
Wenn Du hier Musterlösungen auf dem Präsentierteller erwartest, bist Du auf dem falschen Dampfer.
Wie erreiche ich, dass die Liste beispielsweise nach dem int-Wert Econ sortiert wird? Wenn es möglich ist würde ich gerne wissen, wie man das auf- sowie auch absteigend sortieren kann.
Sieht das nach einer Bitte für eine Musterlösung aus? Im war das auch die Antwort zu deiner Frage, was denn mein Problem ist. Also, immer genau hingucken bevor man irgendwas postet oder sich aufregt.
Die Leute, die Dir hier (zu) helfen (versuchen), waren sicherlich nicht zu bequem, die Bücher zu lesen und die Grundlagen zu lernen.
Wenn Du hier Musterlösungen auf dem Präsentierteller erwartest, bist Du auf dem falschen Dampfer.
Zumal es in diesem Fall auch durchaus ein gut gemeinter Rat gewesen sein wird, in ein Buch zu schauen. Wenn man Java (oder eine beliebige Programmiersprache) lernt, wird man nämlich immer wieder auf solche "einfachen" Probleme stoßen, die ein Buch oder das Internet schnell beantwortet. Man ist gut beraten, wenn man sich schnell daran gewöhnt, selbst zu recherchieren, bevor man andere fragt.
1. Ja, ich habe nach einer Antwort auf meine Frage gesucht.
2. Ja, ich habe den gleichen Artikel über das Sortieren (SlaterB) bereits gefunden, konnte damit allerdings nichts anfangen.
3. Ich poste hier meine Frage.
4. Jeder schlägt mir vor, selbst danach zu suchen oder labert irgendwelchen Mist.
Leute, esst mal was zum Mittag. Ich glaube, eure Elektrolyt-Werte sind im Keller. Soeine Dummlaberei hab ich hier ja noch nie erlebt.
es wird immer so realistisch, wenn ein kleiner Neuling meckert und natürlich im Recht ist,
während viele jahrelange seriöse Mitglieder selbstverständlich die letzten Idioten sind
Ich darf nochmal darauf hinweisen, dass wir hier im Anfänger-Forum sind. Und wenn ich mit den Tipps der Profis nichts anfangen kann, ist es doch mein Recht nochmals nachzufragen. Zudem ist meine Frage schon beantwortet worden.
P.S. Wozu mich 3 Mal darauf hinweisen mir gefälligst selbst die Antwort zu suchen, wenn ich mit dem allgemeinen Kram den ich finde nichts anfangen kann?
Kleiner Frage hast du wirklich eine Liste oder eine Menge:
Bei Menge:
Code:
SortedSet<XY> sortedSet = new TreeSet( new Comparator<XY>() {
public int compare( XY o1, XY o2 )
{
return 0; // Hier die Soriterkriteriren des Objects impl. kannst z.B. compareTo der ADTs benutzen.
}
});
fertig. Hat mich ungefaehr 5 Minuten gekostet ....
Ich darf nochmal darauf hinweisen, dass wir hier im Anfänger-Forum sind. Und wenn ich mit den Tipps der Profis nichts anfangen kann, ist es doch mein Recht nochmals nachzufragen. Zudem ist meine Frage schon beantwortet worden.
P.S. Wozu mich 3 Mal darauf hinweisen mir gefälligst selbst die Antwort zu suchen, wenn ich mit dem allgemeinen Kram den ich finde nichts anfangen kann?
Nächstes Mal nicht gleich so patzig auf gut gemeinte Ratschläge reagieren. Sonst brauchst Du Dich nicht wundern, wenn Dir irgendwann gar keiner mehr hilft. Gilt für dieses Forum und eigtl. auch jede andere Situation des täglichen Lebens.
Kleiner Frage hast du wirklich eine Liste oder eine Menge:
Bei Menge:
Code:
SortedSet<XY> sortedSet = new TreeSet( new Comparator<XY>() {
public int compare( XY o1, XY o2 )
{
return 0; // Hier die Soriterkriteriren des Objects impl. kannst z.B. compareTo der ADTs benutzen.
}
});
fertig. Hat mich ungefaehr 5 Minuten gekostet ....
wie ich eingangs gepostet habe, es ist eine Liste, gefüllt mit einem selbst erstellten Datentyp. Und darum finde ich das nicht ganz so einfach sowas zu sortieren wie einfache Strings o.ä. wie es oft in Büchern vorgeführt wird.
Nächstes Mal nicht gleich so patzig auf gut gemeinte Ratschläge reagieren. Sonst brauchst Du Dich nicht wundern, wenn Dir irgendwann gar keiner mehr hilft. Gilt für dieses Forum und eigtl. auch jede andere Situation des täglichen Lebens.
Ich glaube schon, dass ich immer höflich geblieben bin... bis zu dem Punkt, wo man von oben auf mich herab geblickt hat und meinte ich würde gar nichts können. Hallo? Wenn du den Thread aufmerksam verfolgt hättest, wäre dir das nicht entgangen.
Kleiner Frage hast du wirklich eine Liste oder eine Menge:
Bei Menge:
Code:
SortedSet<XY> sortedSet = new TreeSet( new Comparator<XY>() {
public int compare( XY o1, XY o2 )
{
return 0; // Hier die Soriterkriteriren des Objects impl. kannst z.B. compareTo der ADTs benutzen.
}
});
fertig. Hat mich ungefaehr 5 Minuten gekostet ....
wie ich eingangs gepostet habe, es ist eine Liste, gefüllt mit einem selbst erstellten Datentyp. Und darum finde ich das nicht ganz so einfach sowas zu sortieren wie einfache Strings o.ä. wie es oft in Büchern vorgeführt wird.
wie ich eingangs gepostet habe, es ist eine Liste, gefüllt mit einem selbst erstellten Datentyp. Und darum finde ich das nicht ganz so einfach sowas zu sortieren wie einfache Strings o.ä. wie es oft in Büchern vorgeführt wird.
Mit zwei sort()-Methoden bietet die Utility-Klasse Collections die Möglichkeit, die Elemente einer Liste stabil zu sortieren.
class java.util.Collections
* static <T extends Comparable<? super T>> void sort( List<T> list ) Sortiert die Elemente der Liste gemäß ihrer natürlichen Ordnung, die ihnen die Implementierung über Comparable gibt.
* static <T> void sort( List<T> list, Comparator<? super T> c ) Sortiert die Elemente der Liste gemäß der Ordnung, die durch den Comparator c festgelegt wird. Einen mögliche natürliche Ordnung spielt keine Rolle.
Kleiner Frage hast du wirklich eine Liste oder eine Menge:
Bei Menge:
Code:
SortedSet<XY> sortedSet = new TreeSet( new Comparator<XY>() {
public int compare( XY o1, XY o2 )
{
return 0; // Hier die Soriterkriteriren des Objects impl. kannst z.B. compareTo der ADTs benutzen.
}
});
fertig. Hat mich ungefaehr 5 Minuten gekostet ....
wie ich eingangs gepostet habe, es ist eine Liste, gefüllt mit einem selbst erstellten Datentyp. Und darum finde ich das nicht ganz so einfach sowas zu sortieren wie einfache Strings o.ä. wie es oft in Büchern vorgeführt wird.
Eine Liste ist per se unsortiert. Du kannst sie mittels Collections.sort() sortieren, aber sobald Du wieder ein Objekt einfügst, ist die Sortierung wieder dahin. Wenn Du eine Collection brauchst, die ständig sortiert ist, dann verwende ein TreeSet.
Nötig zum Sortieren: Entweder müssen die Elemente der Collection Comparable implementieren oder Du nutzt einen Comparator. Details dazu findest Du in der API Doc, in jedem Grundlagenbuch, über die Forensuche, bei Google, ...
Ok, da ich nach int-Werten sortieren möchte, muss ich keinen Comparator einfügen, den Integer implementiert bereits Comparable. Richtig?
Wenn ich dann meine Liste sortieren möchte, warum muss ich Collections.sort() schreiben? Warum geht nicht daten.sort()? Ich komme damit echt nicht weiter. Hab mir jetzt ne Stunde die API angesehen und die tollen Beispiele bei galileo computing. Und ich bin noch kein Stück weiter.
Warum geht nicht daten.sort()? Ich komme damit echt nicht weiter. Hab mir jetzt ne Stunde die API angesehen und die tollen Beispiele bei galileo computing. Und ich bin noch kein Stück weiter.
Weil es keine Methode sort() in List gibt. Mach halt einfach (vorher einen geeigneten Comparator definieren, der gemäß des gewünschten Feldes vergleicht):
Nun habe ich an meine Klasse "implements Comparator<Datensatz>" schreiben müssen. Das führte zu einem Error, die Klasse war nicht abstract und sonst noch was. Hab dann auch "abstract" der Klasse hinzugefühgt.
Ist dann das hier mein Comparator?
Code:
public int compareEcon(Datensatz d1, Datensatz d2){
return d1.getEcon()-d2.getEcon();
}
Wie bereits gesagt, sowas hat der Prof. mit uns nie gemacht... und ich hab's bis jetzt noch nie gebraucht und nie darüber gelesen. Nagut... *Javainsel durchstöber*
Cool, danke, dann werd ich das in wenigen Minuten mal komplett ausprobieren...
Da kommt dann aber noch ein anderes Problemchen auf. Ich habe die Methode nun ja mit Econ als Vergleichsindikator angegeben. Ich möchte aber auch auf andere Werte vergleichen. Die Methode kann ich aber nur einmal implementieren. Wie kann ich das erreichen, dass ich auch auf andere Werte vergleichen kann als nur auf Econ?