Array sortieren

Willi.We

Neues Mitglied
Hallo erstmals,
ich habe ein Array für Wetterstationen mit 4 Einträgen, der erste mit der ID, der zweite und dritte speichert die Koordinaten und der vierte Eintrag gibt an, wie weit die Station von einem Ort entfernt ist.
So speichere ich das:
array_stationen [0] [e] = station_id;
array_stationen [1] [e] = station_Breite;
array_stationen [2] [e] = station_Länge;
array_stationen [3] [e] = Entfernung;


Das e gibt die Wetterstationen an.

Ich würde gerne die ganzen Einträge nach dem vierten Wert, also der Entfernung sortieren, sodass ich ganz oben meine nächste Wetterstation stehen habe. Ist das möglich?
 
Zuletzt bearbeitet:
Beste Antwort
Ach, ich habe wohl übersehen, dass du ein zweidimensionales Array hast. Weißt du denn, wie du aufsteigend sortieren kannst, z. B. mit Bubblesort? Dann iteriere über alle Elemente der vierten Spalte und beim Tauschen der Elemente musst du die anderen Spalten einfach mit tauschen.

Klassen und OOP gehört zu den Java-Grundlagen. Ich würde dir empfehlen dir zunächst diese Grundlagen anzueignen, bevor du hier weiter arbeitest.

temi

Top Contributor
Wenn du das so speicherst, dann hast du in dem Array mit vier Einträgen doch nur eine Wetterstation gespeichert?

Was willst du da noch sortieren?

Besser wäre es, wenn du für die Wetterstation eine eigene Klasse verwendest und dann ein Array von Wetterstationen hast.
 

Willi.We

Neues Mitglied
Ich habe um die 70 Wetterstationen gespeichert, diese sollen nach dem vierten Wert (Entfernung) aufwärts sortiert werden.
Das mit der eigenen Klasse, wie man das macht müsst ich mir anschauen, hast du vielleicht einen Link, wo das erklärt wird?
 

temi

Top Contributor
Ach, ich habe wohl übersehen, dass du ein zweidimensionales Array hast. Weißt du denn, wie du aufsteigend sortieren kannst, z. B. mit Bubblesort? Dann iteriere über alle Elemente der vierten Spalte und beim Tauschen der Elemente musst du die anderen Spalten einfach mit tauschen.

Klassen und OOP gehört zu den Java-Grundlagen. Ich würde dir empfehlen dir zunächst diese Grundlagen anzueignen, bevor du hier weiter arbeitest.
 
Beste Antwort

Oneixee5

Top Contributor
Sortierung muss man nicht selbst implementieren, Java bringt da schon einiges mit. Du kannst mit Hilfe einer Comparator-Klasse so ziemlich alles nach allem möglichen sortieren. Dein zu sortierendes Objekt kann auch das Interface Comparable implementieren, dies empfiehlt sich für die Standardsortierung. Hier mal ein Beispiel:

Java:
public class App {

    private static class WeatherStation {

        private double distance;

        public double getDistance() {
            return distance;
        }

        public void setDistance(double distance) {
            this.distance = distance;
        }

        // mehr getter / setter
    }

    private static class DistanceComparator implements Comparator<WeatherStation> {
        public int compare(WeatherStation o1, WeatherStation o2) {
            return Double.compare(o1.getDistance(), o2.getDistance());
        }
    }

    public static void main(String[] args) {

        // Liste zufälliger Werte
        List<WeatherStation> list = new ArrayList<>(100);
        for (int i = 0; i < 100; i++) {
            double randomDistance = ThreadLocalRandom.current().nextDouble(1D, 100D);
            WeatherStation station = new WeatherStation();
            station.setDistance(randomDistance);
            list.add(station);
        }

        // Sortierung
        Collections.sort(list, new DistanceComparator());
        // Ausgabe
        list.forEach(e -> System.out.printf("List-Distanz: %s\n", e.getDistance()));

        // Array zufälliger Werte
        WeatherStation[] stations = new WeatherStation[100];
        for (int i = 0; i < 100; i++) {
            double randomDistance = ThreadLocalRandom.current().nextDouble(1D, 100D);
            WeatherStation station = new WeatherStation();
            station.setDistance(randomDistance);
            stations[i] = station;
        }
        // Sortierung
        Arrays.sort(stations, new DistanceComparator());
        // Ausgabe
        for (WeatherStation station : stations) {
            System.out.printf("Array-Distanz: %s\n", station.getDistance());
        }

    }

}
Mehr Infos dazu findest du z.B. hier: https://openbook.rheinwerk-verlag.d...09_001.htm#mj3ddd02b9666d4fc340fdb6405a0f3616
 
Zuletzt bearbeitet:

Neumi5694

Top Contributor
temis Antwort ist schon mal ganz gut, Oneixee5's Lösung mit Datentyp an statt Array gefällt mir noch besser.

Aber falls du bei einem 2D-Array bleiben willst ...
Du kannst das Ganze noch etwas optimieren, indem du dann nicht jeden einzelnen Feldinhalt vertauschst, sonden den Eintrag für die "Zeile" in der Referenz auf das 2D-Array.
Java:
//Ich hab hier mal Object angenommen, setzt hier einfach ein, was du verwendest
Object[]temp = array_station[i]
array_station[i] = arraystation[j]
arraystation[j] = temp

Noch besser: Schreib eine einfache compare-Methode und lass das Array dann mit Arrays.sort sortieren.
Java:
//auch hier Annahme Object[]
private int compareByDistance(Object[] e1, Object[] e2) {
    return Double.compare((double)e1[3],(double) e2[3]);
}
Arrays.sort(array_station, this::compareByDistance);
Das ist allerdings sehr spezifisch auf genau dieses Arraystruktur ausgelegt. Einen eigenen Datentyp für jeden Eintrag zu verwenden, ist in jedem Fall besser.

Ich gehe mal davon aus, dass ihr gerade lernen müsst, mit Arrays umzugehen :)
Auf diese Art wirst du später nicht mehr arbeiten wollen. Auch wirst du im Normalfall Listen und keine Arrays verwenden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Fynn29 Liste sortieren ohne Array und ohne vorgegebene Sortierung Allgemeine Java-Themen 24
FRI3ND Datentypen Date-Array sortieren - Text mitnehmen? Allgemeine Java-Themen 7
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
Bluedaishi String Array mit Datum und Uhrzeit String sortieren Allgemeine Java-Themen 6
W Array Indizes sortieren Allgemeine Java-Themen 16
E Array alphabetisch sortieren Allgemeine Java-Themen 1
T Array Sortieren (null Werte ans Ende) Allgemeine Java-Themen 2
A 2D-array problem (sortieren) Allgemeine Java-Themen 6
S String-Array nach Datum sortieren Allgemeine Java-Themen 10
Developer_X Ein Array nach einem bestimmten Attribut sortieren Allgemeine Java-Themen 3
Z Als Final deklarierte Klasse im Array sortieren Allgemeine Java-Themen 2
B ein spezielles Byte-Array sortieren Allgemeine Java-Themen 11
S Java array sortieren Allgemeine Java-Themen 8
N Object-Array mit Comparator absteigend sortieren? Allgemeine Java-Themen 10
F Array mit Zahlen drin sortieren Allgemeine Java-Themen 2
M array sortieren Allgemeine Java-Themen 3
LucasGlockner Effizienter byte-Zugriff auf ein long[]-Array Allgemeine Java-Themen 8
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
M Queue mit einem Array implemetieren Allgemeine Java-Themen 16
M Array Rang eines Elements Allgemeine Java-Themen 4
TheSepp Java bestimmtes Array auf den Wert 0 setzen Allgemeine Java-Themen 32
TheSepp Wie kann man Leerzeichen aus einer Array liste entfernen? Allgemeine Java-Themen 10
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
noah1407 Array Allgemeine Java-Themen 3
D Methoden Teil-Array mit Maximalwert bestimmen Allgemeine Java-Themen 23
N einem Array Objekte hinzufügen die ihr Array position gespeichert haben Allgemeine Java-Themen 34
N zweidimensionalen Array in dreidimensionalen Array speichern Allgemeine Java-Themen 4
N Schnellste Methode, ein Array durchzugehen? Allgemeine Java-Themen 9
T Objekt Array Aufgabe mit Busdatenbank Allgemeine Java-Themen 2
L Array und Index Allgemeine Java-Themen 26
L die 3 größten Zahlen im Array Allgemeine Java-Themen 1
G jToggleButton in Array/ArrayList Allgemeine Java-Themen 12
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Array Summe bestimmen tipps? Allgemeine Java-Themen 14
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
V4ll3.Wff Array in Java Allgemeine Java-Themen 4
Noahscript Aus einem byte Array Steuerungszeichen und Code bekommen und ersetzen Allgemeine Java-Themen 3
H Array Sportschütze Allgemeine Java-Themen 6
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6
xGh0st2014 Problem mit Java Array Allgemeine Java-Themen 1
M Array verändern Allgemeine Java-Themen 1
A JavaFX 2 dimensionales array Allgemeine Java-Themen 1
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Array dynamisieren oder ArrayList verwenden? Allgemeine Java-Themen 17
M Java 2D Array für ein Grid erstellen ? Allgemeine Java-Themen 2
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
H Elemente aus ArrayList in Array speichern Allgemeine Java-Themen 8
E Datentypen Wie kann ich die Längen der unterschiedlichen Ebenen aus einem Objekt lesen von dem ich weiß, dass es ein mehrdimensionaler Array ist? Allgemeine Java-Themen 3
N Byte Array in Java "dekomprimieren" Allgemeine Java-Themen 3
parrot Array Aufgabe Allgemeine Java-Themen 3
N String Array Eingabe Allgemeine Java-Themen 6
R Warum wird mir in der Konsole das "Standard Array" ausgegeben? Allgemeine Java-Themen 2
N Variablen Array Länge ändern. Allgemeine Java-Themen 8
D Kgv aller Paare aus einem Array mit n integer berechnen Allgemeine Java-Themen 5
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
kodela Problem mit strukturiertem Array Allgemeine Java-Themen 18
A Array Problem Allgemeine Java-Themen 8
Drachenbauer Wie stelle ich fest, ob ein Objekt in meinem Array vorkommt? Allgemeine Java-Themen 5
F Datei in String-Array einlesen Allgemeine Java-Themen 8
L Objekt aus Objekt-array "löschen" Allgemeine Java-Themen 2
I Array Parameter mit 2 Klassen - NullPointerException Allgemeine Java-Themen 3
X Größten Werte in meinem Array löschen? Allgemeine Java-Themen 16
E Angabe wie groß Array sein soll und in for-schleifen diesen Array füllen Allgemeine Java-Themen 3
F 3 Dimensionales Array mit Allgemeine Java-Themen 9
M Steueralgorithmus verwandelt Array in Anfangszustand Allgemeine Java-Themen 9
W Array vs. ArrayList vs. HashMap Allgemeine Java-Themen 20
D Datentypen 2-3 Baum erstellen mit geordnetem int-array Allgemeine Java-Themen 0
T Objekt in Array packen Allgemeine Java-Themen 6
M Zahlen in Array anordnen Allgemeine Java-Themen 8
M Eclipse Unvollständigen Array ansteuern Allgemeine Java-Themen 2
D Erste Schritte Im Array Werte tauschen Allgemeine Java-Themen 5
Xge For/Array Error: IndexOutOfBounds Allgemeine Java-Themen 4
M Wie kann ich ein int[] Array in einer Methode benutzen? Allgemeine Java-Themen 6
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
J Variablen Array ertellen bei model.put Allgemeine Java-Themen 13
S Eindimensionales Array in zweidimensionales Array speichern Allgemeine Java-Themen 5
R convert 2d array list to 2d array Allgemeine Java-Themen 1
J json Array würfel Spalten durcheinander Allgemeine Java-Themen 9
MiMa Array umbau oder Alternative? Allgemeine Java-Themen 5
L Datentypen 3D Array Allgemeine Java-Themen 3
M 2D Array mit unterschiedlichen Längen erstellen und befüllen Allgemeine Java-Themen 11
Mario1409 Methoden JSON Array von URL Allgemeine Java-Themen 8
E Swing Array mit Bildern in GUI darstellen Allgemeine Java-Themen 2
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
H Zweidimensionales Array - Zellen der Tabelle verbinden Allgemeine Java-Themen 2
M Zweidimensionales Array mit Binärzahlen füllen Allgemeine Java-Themen 8
M Array aus Thread Objekten erstellen Allgemeine Java-Themen 2
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
G Array ohne Aufzählungszeichen ausgeben Allgemeine Java-Themen 6
J Wie kann ich ein Java Array als Säulendiagramm ausgeben? Allgemeine Java-Themen 2
Z 2D Array Pixels reparieren Allgemeine Java-Themen 2
S Algorithmus welcher True-Werte in einem Array findet und auswertet. Allgemeine Java-Themen 5
B Polibios Array erweitern Allgemeine Java-Themen 1
R Index in einem Array löschen Allgemeine Java-Themen 10
R Index in einem Array löschen Allgemeine Java-Themen 2
J Array-List Bubble-Sort Allgemeine Java-Themen 12
4 Variablen Int-Array Int Zuweisen Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben