Java: Array monat absteigend sortieren?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

a) Zähle mit der Schleife rückwärts. Beginnend bei monat.length - 1.

b) Innerhalb der Schleife jedesmal neu zu sortieren, ist unnötiger Aufwand. Du kannst den Aufruf komplett entfernen oder du entfernst stattdessen die Schleife und verwendest ein Integer-Array (Integer[]).

Max2238193 
Fragesteller
 26.10.2019, 17:59

ich habe das jetzt wie folgt gemacht: for (int i= monat.length -1 ;i >=0; i--)

und auf new int[13] geändert. Es kommen jetzt die absteigende Werte raus. Nur eine Frage, ist es okay so oder kann das vereinfachen bzw besser darstellen?

0
regex9  26.10.2019, 18:24
@Max2238193

Wenn im Schleifenkörper die Arrays.sort-Methode nicht mehr aufgerufen wird, wäre das ok so.

Tatsächlich gibt es noch kürzere Lösungen, bspw. über die Streams API, die seit Java 8 verfügbar ist.

int[] range = IntStream.iterate(12, n -> n - 1).limit(13).toArray();

So lange du aber noch mit den Grundlagen arbeitest, würde ich dir empfehlen, jede Möglichkeit zu nutzen, mit Schleifen zu üben und extended stuff erst einzusetzen, wenn du einmal sicher in dem davor bist.

1
Max2238193 
Fragesteller
 26.10.2019, 18:29
@regex9

Okay, behalte ich im Hinterkopf , danke dir vielmals!!

0

Führe die Sortierung doch erst nach der Befüllungsschleife aus.

(Damit die Sort-Methode funktioniert solltest du den Datentyp auch etwas anpassen.

Siehe regex9 seinen Kommentar)

Integer[] monat = new Integer[12];

for (Integer count=0;count<12;count++)
{
    monat[count]=count+1;
    System.out.println(monat[count]);
}

Arrays.sort(monat, Collections.reverseOrder());

MFG xGlumi

Woher ich das weiß:eigene Erfahrung – Programmier/IT Erfahrung seit 2009 (Freizeit und Beruf)
regex9  26.10.2019, 17:25

Die sort-Methode kann primitive Array-Datentypen nicht als Argument aufnehmen. Stattdessen wäre ein Integer-Array (Integer[]) vonnöten.

1
xGlumi  26.10.2019, 17:26
@regex9

Du hast Recht, auf den Datentyp habe ich gerade nicht geachtet.

Ich editiere deine Antwort mal mit in die Antwort :)

MFG xGlumi

1

Wenn du statt int einen Integer nimmst und dann     sort(T[] a, Comparator<? super T> c) verwendest, geht das.

Als Comparator kannst du den reversed-Comparator der Klasse Integer nehmen.

Comparator.reversed()

Geht erst ab Java 8.

Java bietet sicherlich eine Funktion um Arrays absteigend zu sortieren. Schau mal nach 'java sort array descending' oder 'java sort array reverse'.