Collection.sort sortiert nicht

mark.1098

Neues Mitglied
Hallo,

ich bin Java Anfänger und arbeite an einem Projekt in dem ein Hamster (paule) simuliert wird der Körner (grain) einsammeln soll. Es sollen sich die Anzahl aller Körner die Pro gelaufenen Schritt eingesammelt wurden gemerkt werden. Diese sollen einer ArrayList hinzugefügt und anschließend sortiert werden. Hierfür habe ich eine ArrayList erstellt die Integer Werte (für die Anzahl der eingesammelten Körnern pro gelaufenen Schritt) speichert und einen grainCounter der zählt wieviele Körner pro Schritt gesammelt wurden. Das speichern der Körneranzahl pro Schritt funktioniert, jedoch möchte ich dass die ArrayList mit allen Integer Werten der Größe nach sortiert wird was ich mit Collection.sort versucht habe. allerdings wird mir nach Ausführung der Operation meine ursprüngliche Liste und nicht die sortierte auf der Konsole ausgegeben. Vorab schonmal danke für euere Hilfe.


Java:
    @Override
    protected void run() {

        List<Integer> grains = new ArrayList<>();

        int grainCounter = 0;

        while (paule.grainAvailable()) {

            paule.pickGrain();
            grainCounter++;
        }
        grains.add(grainCounter);

        if (paule.frontIsClear()) {
            paule.move();
            run();

        }

        Collections.sort(grains);
        System.out.println(grains);
    }
 

mihe7

Top Contributor
Wenn Du uns auch noch Code zeigen würdest... (zum Einfügen bitte Code-Tags verwenden: die drei Punkte neben dem Smiley -> Code -> Java).
 
K

kneitzel

Gast
Das Problem ist, dass Du dir alles in lokalen Variablen merkst:
Java:
protected void run() {

        List<Integer> grains = new ArrayList<>(); // Lokale Variable!

        // Viel gekürzt ....
    
        run(); // Rekurisver Aufruf -> hier wird dann eine neue lokale Variable verwendet ...
    
        // Viel gekürzt ....
    }

Was Du machen kannst ist, dass du statt einer lokalen Variable eine Instanzvariable nutzt. Dann verwenden alle Aufrufe von run die gleiche Instanz von ArrayList.

Oder wenn es Probleme mit Initialisierung und co gibt (Sollte aber nicht der Fall sein, denn es sieht so aus, als hättest Du einen Thread oder Runnable und den wirst Du wohl nicht mehrfach verwenden ohne ihn neu zu erstellen), teilst Du es auf in zwei Methoden:
Java:
    @Override
    protected void run() {
        List<Integer> grains = new ArrayList<>();
        run(grains);
    }

    protected void run(List<Integer> grains) {
        List<Integer> grains = new ArrayList<>();
       int grainCounter = 0;

        while (paule.grainAvailable()) {

            paule.pickGrain();
            grainCounter++;
        }
        grains.add(grainCounter);

        if (paule.frontIsClear()) {
            paule.move();
            run(grains);

        }

        Collections.sort(grains);
        System.out.println(grains);
    }

(Ungetestet - aber da würde dann auch nur einmal grains erstellt und dann immer als Parameter mitgegeben.)
 
X

Xyz1

Gast
Du solltest zusätzlich noch einen Index speichern
Java:
int index = 1;
List<int[]> grains = new ArrayList<>();

for (int j = 0; j < 10; j++) {
	int grainCounter = 0;

	// while (paule.grainAvailable()) {
	for (int i = new Random().nextInt(10); i < 10; i++) {
		// paule.pickGrain();
		grainCounter++;
	}
	grains.add(new int[] { index, grainCounter });
	index++;

	// if (paule.frontIsClear()) {
	// paule.move();
	// run(); (???)
	// }
}

grains.forEach(g -> System.out.print(Arrays.toString(g) + " "));
System.out.println("");
Collections.sort(grains, (o1, o2) -> o2[1] - o1[1]);
grains.forEach(g -> System.out.print(Arrays.toString(g) + " "));
System.out.println("");
 
K

kneitzel

Gast
Als kleine Ergänzung: Du hast in jedem rekursiven Run Aufruf eine Ausgabe der Liste. Somit hast Du keine unsortierte Liste ausgegeben bekommen sondern Du hast lauter einzelner Listen mit jeweils einem Element ausgegeben bekommen. Und das in verkehrter Reihenfolge, da die Ausgabe erst nach dem rekursiven Aufruf erfolgte....

Also erstes Feld: 1 KOrn aufgehoben, also enthält die Liste nur die 1.
1. Rekursion: zweites Feld, mal 2 Körner angenommen: Also liste hier enthält die 2 (Eigenständige Liste wie schon erläutert)
2. Rekursion: drittes Feld, mal 3 Körner angenommen: Also Liste bekommt die 3.
--> Jetzt kein Feld mehr da, also keine weitere Rekursion
2. Rekursion: Ausgabe: "3" und Rücksprung
1. Rekursion: Ausgabe "2" und Rücksprung
Hauptaufruf: Ausgabe der "1" und fertig
 

mihe7

Top Contributor
Wenn Du uns auch noch Code zeigen würdest... (zum Einfügen bitte Code-Tags verwenden: die drei Punkte neben dem Smiley -> Code -> Java).
Hallo?!? Kann mir mal einer verraten, warum beim Beitrag des TE nicht steht, dass er bearbeitet wurde? Zuerst hing da ein PDF dran, das bei meinem Versuch, es anzuzeigen, nicht mehr gefunden werden konnte. Nach einem Reload war der Anhang entfernt und der Kommentar bestand nur noch aus dem Text ohne Code.
 

mrBrown

Super-Moderator
Mitarbeiter
Hallo?!? Kann mir mal einer verraten, warum beim Beitrag des TE nicht steht, dass er bearbeitet wurde? Zuerst hing da ein PDF dran, das bei meinem Versuch, es anzuzeigen, nicht mehr gefunden werden konnte. Nach einem Reload war der Anhang entfernt und der Kommentar bestand nur noch aus dem Text ohne Code.
Gefühlt kann man in den ersten 5 Minuten ohne den Hinweis bearbeiten, @Flown kann da vielleicht mehr zu sagen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Collection<Typ> sort Java Basics - Anfänger-Themen 4
S Collection Sort Java Basics - Anfänger-Themen 15
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
Encera Garbage Collection Java Basics - Anfänger-Themen 9
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
berserkerdq2 Warum soll ich shuffle nutzen, um bei Rückgabewert Collection eine Liste zurückzugeben? Java Basics - Anfänger-Themen 3
D public ArrayList(Collection<? extends E> c); Java Basics - Anfänger-Themen 2
O Verwirrt beim Java Collection Framework aufruf! Java Basics - Anfänger-Themen 9
T Collections Geeignete Collection/Liste/Datenbank Java Basics - Anfänger-Themen 17
E Interface List nicht als Collection an erkannt. Java Basics - Anfänger-Themen 14
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
N Collections Werte aus .txt in einer Collection speichern Java Basics - Anfänger-Themen 11
M Collection Aufgabe Java Basics - Anfänger-Themen 22
Arif Collections Unkonstruiertes Objekt einer Collection hinzufügen Java Basics - Anfänger-Themen 2
W Collection-Problem Java Basics - Anfänger-Themen 35
P Klassen In einer Autoklasse das Objekt Auto mittels Collection Speichern Java Basics - Anfänger-Themen 4
N Collection sortieren/ filtern Java Basics - Anfänger-Themen 7
K Collections Zugriff auf ein bestimmtes Element in der Collection Java Basics - Anfänger-Themen 1
J Objekt in Collection speichern Java Basics - Anfänger-Themen 4
A Interface in Collection (Liste) angeben Java Basics - Anfänger-Themen 2
J Collection Objekt Java Basics - Anfänger-Themen 3
T Collections Zusammengehörende Strings in einer Collection Java Basics - Anfänger-Themen 2
S Frage zu Collection-Generics in Subklassen Java Basics - Anfänger-Themen 6
B Collections Collection soll nur einen bestimmten Datentyp aufnehmen Java Basics - Anfänger-Themen 12
B addAll(Collection<? extends E> c) Java Basics - Anfänger-Themen 9
K Collections Collection für 12 mio Strings Java Basics - Anfänger-Themen 7
Y Collection der eigenen Klasse Java Basics - Anfänger-Themen 10
S Collections Welche Collection ist am geeignetsten? Java Basics - Anfänger-Themen 3
R Passende Collection gesucht Java Basics - Anfänger-Themen 11
G Collections Wahl der richtigen Collection Java Basics - Anfänger-Themen 11
O Frage zu Verständnis von Collection Java Basics - Anfänger-Themen 4
D Scala Iterable zu Java Collection konvertieren Java Basics - Anfänger-Themen 3
D Frage zu Collection und deren Anwendung Java Basics - Anfänger-Themen 2
S Welche Collection kann sich selber sortieren? Java Basics - Anfänger-Themen 8
J Collection soll übergeben werden... Java Basics - Anfänger-Themen 7
C Vector - obsolete collection Java Basics - Anfänger-Themen 1
B Iterator und Collection Java Basics - Anfänger-Themen 11
G Java Collection Frameworks Java Basics - Anfänger-Themen 5
D Collection Konvertieren Java Basics - Anfänger-Themen 7
K Datentypen Über Collection iterieren bringt fehler Java Basics - Anfänger-Themen 8
K OOP Aus Collection Objekte bestimmter Subklassen entfernen Java Basics - Anfänger-Themen 7
S Welche Collection? Java Basics - Anfänger-Themen 5
S Collection rückwärts durchsuchen Java Basics - Anfänger-Themen 4
W Wie kann ich auf Object meiner Collection zugreifen Java Basics - Anfänger-Themen 7
J Collection Vector Java Basics - Anfänger-Themen 8
B Collection während Iteration verändern Java Basics - Anfänger-Themen 7
T Collection in collection Java Basics - Anfänger-Themen 6
T Collection von Objekten verschiedener Klassen Java Basics - Anfänger-Themen 4
J Collection ArrayList und mit erweitertem for iterieren Java Basics - Anfänger-Themen 7
J Probleme mit Collection ArrayList Java Basics - Anfänger-Themen 2
C Collection vs. LinkedList, Abstrakt vs. Konkret Java Basics - Anfänger-Themen 9
G Collection<BufImg> in Datei speichern Java Basics - Anfänger-Themen 8
A Collection auslesen ohne Objekttyp zu kennen? Java Basics - Anfänger-Themen 11
G Collection<Strings> - Liste von Strings verwalten Java Basics - Anfänger-Themen 9
A Struts: Über Collection iterieren mir Taglibs? Java Basics - Anfänger-Themen 13
0x7F800000 elemente aus einer Collection korrekt löschen Java Basics - Anfänger-Themen 8
T Frage zu Vererbung beim Collection-Framework Java Basics - Anfänger-Themen 4
I Frage zu Collection und List Interfaces Java Basics - Anfänger-Themen 2
M Object [][] ist nicht vom Typ Collection? Java Basics - Anfänger-Themen 3
S Collection wie LinkedHashMap Java Basics - Anfänger-Themen 7
J LinkedList, Collection, ArrayList, List. was denn bitte? Java Basics - Anfänger-Themen 6
A Welche Collection? Java Basics - Anfänger-Themen 13
C Collection in Verbindung mit String.split speicherlastig Java Basics - Anfänger-Themen 20
S Collection in einer Collection Java Basics - Anfänger-Themen 5
A Welche Collection soll ich nehmen? Java Basics - Anfänger-Themen 4
E welche Datenstruktur (Collection) Java Basics - Anfänger-Themen 4
K Collection und Iterator Java Basics - Anfänger-Themen 7
I Bestimmte Variablen in Collection Classes Java Basics - Anfänger-Themen 2
M Source Code von Collection Framework, etc. Java Basics - Anfänger-Themen 3
vogella Cast from Collection.toArray to String[] Java Basics - Anfänger-Themen 2
K Verständnisfrage Collection, ArrayList und Referenzen Java Basics - Anfänger-Themen 4
S Mit Collection<int[]> umgehen Java Basics - Anfänger-Themen 2
S welche collection ? String und object Java Basics - Anfänger-Themen 5
M gibt es eine collection mit definierter maximaler größe Java Basics - Anfänger-Themen 4
G Collection Framework Java Basics - Anfänger-Themen 8
V Mehrdimensionale Collection? Java Basics - Anfänger-Themen 4
U JSTL: Collection auslesen mit forEach Java Basics - Anfänger-Themen 1
A Interface Collection implementieren? Java Basics - Anfänger-Themen 4
I Collection sortieren, ":" höchste "Priorität& Java Basics - Anfänger-Themen 4
P Äquivalent zu Visual Basic Collection Java Basics - Anfänger-Themen 6
G Collection, aber welche? Java Basics - Anfänger-Themen 6
A Collection<String> Java Basics - Anfänger-Themen 4
E Strings in Collection Java Basics - Anfänger-Themen 6
R welche Collection nehmen? Java Basics - Anfänger-Themen 4
P Collection Vector speichern mittels Serialisierung? Java Basics - Anfänger-Themen 2
megachucky Collection Vector: ausgabe klappt nicht richtig Java Basics - Anfänger-Themen 9
T Welche Collection nehmen? HashMap? Java Basics - Anfänger-Themen 4
L-ectron-X Speicher freigeben - Garbage Collection Java Basics - Anfänger-Themen 6
emreiu Formatiertes Output bei Insertion Sort Java Basics - Anfänger-Themen 6
O Sortieren mit Insertion Sort Java Basics - Anfänger-Themen 3
Tw1Z Erste Schritte Sort in java Java Basics - Anfänger-Themen 2
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
X Collections.sort als Lambda Java Basics - Anfänger-Themen 14
berserkerdq2 Geht collections.sort bei allen? Linkedhashset, ArrayList, HashSet etc. Java Basics - Anfänger-Themen 4
L Insertion Sort bei zweidimensionalem Array Java Basics - Anfänger-Themen 7
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
Marc111111111 Selection Sort in Java?? Java Basics - Anfänger-Themen 6
G Insertion Sort mit Aray Java Basics - Anfänger-Themen 5
O Collections.sort und List.sort mit Lambda Verwirrung Java Basics - Anfänger-Themen 5
B Collections.sort mit zwei Bedingungen? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben