Sortierverfahren in Java

JavaBeginner
Jetzt üben

Einführung

Sortieren ist eine grundlegende Operation in der Informatik, und Java bietet verschiedene integrierte Methoden zur Sortierung unterschiedlicher Datenstrukturen. Java stellt hierfür verschiedene Klassen bereit. In diesem Lab werden wir untersuchen, wie Arrays, Collections und benutzerdefinierte Klasseninstanzen sortiert werden.

Arrays sortieren

Arrays sind eine einfache Datenstruktur, die dazu dient, gleichartige Daten in einer geordneten Weise zu speichern. Wir können Arrays mithilfe der integrierten sort()-Methode der Klasse Arrays sortieren.

Erstellen oder überschreiben Sie die Datei Sorting.java im Verzeichnis ~/project mit folgendem Code:

import java.util.Arrays;

public class Sorting {
    public static void main(String[] args) {
        int[] arr = {7, 9, 1, 0, 2, 5, 6, 11};
        System.out.println("Array Before Sorting: " + Arrays.toString(arr));
        Arrays.sort(arr);
        System.out.println("Array After Sorting: " + Arrays.toString(arr));
    }
}

Um diesen Code auszuführen, navigieren Sie im Terminal zum Verzeichnis ~/project und führen Sie die folgenden Befehle aus:

javac Sorting.java
java Sorting

Dieser Code sortiert das Array in aufsteigender Reihenfolge. Wenn Sie ein Array in absteigender Reihenfolge sortieren möchten, müssen Sie das Comparator-Interface verwenden.

Collections sortieren

Java stellt die Klasse Collections bereit, die eine sort()-Methode zum Sortieren von Collections wie Listen, Sets und Maps enthält. Die Funktionsweise dieser Methode ähnelt der sort()-Methode der Arrays-Klasse.

Erstellen oder überschreiben Sie die Datei Sorting.java im Verzeichnis ~/project mit folgendem Code:

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Sorting {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>();
        list.add(6);
        list.add(3);
        list.add(8);
        list.add(1);
        list.add(9);

        System.out.println("List before sorting: " + list);

        Collections.sort(list);
        System.out.println("List after sorting: " + list);
    }
}

Um diesen Code auszuführen, navigieren Sie im Terminal zum Verzeichnis ~/project und führen Sie die folgenden Befehle aus:

javac Sorting.java
java Sorting

Sets sortieren

Sets werden verwendet, um ungeordnete Daten ohne Duplikate zu speichern. Wir können Sets nicht direkt mit der sort()-Methode der Collections-Klasse sortieren. Wir können jedoch die geordneten Daten anzeigen, indem wir alle Elemente des Sets in eine Liste übertragen und diese dann sortieren.

Erstellen oder überschreiben Sie die Datei Sorting.java im Verzeichnis ~/project mit folgendem Code:

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Sorting {
    public static void main(String[] args) {
        Set<Integer> set = new HashSet<Integer>();
        set.add(6);
        set.add(3);
        set.add(-2);
        set.add(1);
        set.add(9);

        List<Integer> list = new ArrayList<Integer>(set);
        Collections.sort(list);
        System.out.println("Set after sorting: " + list);
    }
}

Um diesen Code auszuführen, navigieren Sie im Terminal zum Verzeichnis ~/project und führen Sie die folgenden Befehle aus:

javac Sorting.java
java Sorting

Die Ausgabe dieses Codes ist eine sortierte Liste von Ganzzahlen.

Maps sortieren

Maps werden verwendet, um Schlüssel-Wert-Paare zu speichern. Wir können Maps basierend auf ihren Schlüsseln oder Werten sortieren. TreeMap kann ebenfalls verwendet werden, um Schlüssel-Wert-Paare in einer sortierten Reihenfolge zu speichern.

Erstellen oder überschreiben Sie die Datei Sorting.java im Verzeichnis ~/project mit folgendem Code:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class Sorting {
    public static void main(String[] args) {
        Map<Integer, String> map = new TreeMap<Integer, String>();
        map.put(6, "Apple");
        map.put(3, "Banana");
        map.put(1, "Mango");
        map.put(9, "Orange");

        System.out.println("Map before sorting: " + map);

        // Sorting by keys
        Map<Integer, String> sortedByKeyMap = new TreeMap<Integer, String>(map);
        System.out.println("Map after sorting by keys: " + sortedByKeyMap);

        // Sorting by value
        List<Map.Entry<Integer, String>> list = new ArrayList<Map.Entry<Integer, String>>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() {
            public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
                return (o1.getValue()).compareTo(o2.getValue());
            }
        });

        Map<Integer, String> sortedByValueMap = new LinkedHashMap<Integer, String>();
        for (Map.Entry<Integer, String> entry : list) {
            sortedByValueMap.put(entry.getKey(), entry.getValue());
        }
        System.out.println("Map after sorting by values: " + sortedByValueMap);
    }
}

Um diesen Code auszuführen, navigieren Sie im Terminal zum Verzeichnis ~/project und führen Sie die folgenden Befehle aus:

javac Sorting.java
java Sorting

Dieser Code sortiert die Map nach ihren Schlüsseln und Werten.

Zusammenfassung

Dieses Lab hat demonstriert, wie verschiedene Datenstrukturen in Java sortiert werden. Wir haben gelernt, wie man Arrays, Collections und Maps sortiert. Zudem haben wir erfahren, wie man Objekte benutzerdefinierter Klassen mithilfe der Interfaces Comparable und Comparator sortiert. Die sort()-Methode der Klassen Collections und Arrays wurde zum Sortieren von Listen und Arrays verwendet. Abschließend haben wir gelernt, wie Maps basierend auf ihren Werten und Schlüsseln sortiert werden können.