Ich habe eine ArrayList erstellt, die Verweise auf Objekte enthält, die verschiedene Datenmengen enthalten.ArrayList - Erstellen von Komparatoren
Ich möchte das Objekt nach bestimmten Elementen ihrer Daten sortieren.
Ich erfolgreich so mit der collections.sort
zusammen mit einer anonymen Klasse den neuen Komparator definieren.
Ich war erfolgreich in jedem der neuen Komparatoren, die ich erstellt habe, die in richtig sortierter Reihenfolge resultierten.
Für die gleiche ArrayList wie könnte man einen Komparator machen, der die ursprüngliche Eingabe der ArrayList-Reihenfolge geben würde. Ich weiß, dass die ArrayList die Reihenfolge der Objekte speichert, die sie hinzugefügt werden, Reihenfolge der Reihenfolge. Aber wie würde ich nach dem Sortieren der ArrayList mit anderen Vergleichern die ArrayList dann wieder in die ursprüngliche Reihenfolge sortieren, in der sie sich befand? Das ist die eine Sache, die mich stößt, und ich kann es nicht herausfinden.
Edit: Ich sollte klarstellen, das ist für eine Zuweisung, in der die Anweisungen sagen, um eine Standard/Original-Komparator enthalten, um die unsortierte Eingabe zu bekommen. Das macht für mich keinen Sinn, angesichts dessen, was wir erwähnt haben. Die ArrayList speichert die Anzeigenreihenfolge, wenn sie hinzugefügt wird, aber wenn Sie sortieren, wird sie verloren. Ich sehe nicht, wie Sie einen Vergleicher erstellen könnten, der die ursprüngliche Liste sortiert.
Edit2: Ich habe eine ArrayList, die einige Objekte speichern soll, die einige Datenelemente enthalten, die sortiert werden, etwa nach Namen oder nach Alter. Diese Komparatoren waren einfach zu machen und ich mache das erfolgreich. Die Zuweisung möchte auch einen Originalkomparator, der die Daten so anzeigt, wie sie eingefügt wurden. Jetzt werden diese Komparatoren in einem Methodenaufruf übergeben, in dem diese Methode den Collections.Sort für jeden anderen Komparator verwendet. Es verlangt jedoch, dass der ursprüngliche Komparator zuerst verwendet wird.
Die Idee der ursprünglichen Komparator überhaupt scheint unlogisch. Die Tatsache, dass sie zuerst verwendet wird, so dass keine andere Sortierung durchgeführt wurde, lässt den Schluss zu, dass sie nur so erstellt wurde, dass sie der Argumentliste des Aufrufens der Methode zum Anzeigen der Daten entspricht. Mit anderen Worten, ich denke, der ursprüngliche Komparator sollte nichts zurückgeben.
Ich bin mir nicht sicher, ob ich die Frage verstehe, wie Sie es gepostet haben. Die erste Hälfte scheint völlig unabhängig von der zweiten Hälfte zu sein. Die vorherige Reihenfolge ist nach einer Sortierung verloren, sodass es nicht möglich ist, zum Anzeigenauftrag zurückzukehren, da dies von keinem verfolgt wird. Wenn Sie diese Nachverfolgung benötigen, tun Sie dies buchstäblich, indem Sie Ihr Array nicht sortieren, sondern eine Liste erstellen, die Sie kopieren und sortieren, wobei Sie die ursprüngliche Liste beibehalten. –
Klonen Sie Ihre '' ArrayList'' vor der Sortierung, um den Status zu speichern; und Sie könnten diese Klonkopie später verwenden. –
Wenn es eine Hausaufgabe ist, zeigen Sie die genaue Formulierung, beschreiben Sie es nicht in Ihren eigenen Worten. Beachten Sie jedoch die Frage "Wie stelle ich Hausaufgaben?" (Http://meta.stackexchange.com/questions/10811/how-do-i-ask-and-answer-homework-questions) Fragen sind oft erfunden und manchmal Unsinn für Leute, die ihren Lebensunterhalt verdienen, versuchen oder gewohnt sind, mit der Sprache, für die Sie Fragen stellen (das fühlt sich an wie in der Nonsense - Kategorie) –