Java-Algorithmen

In diesem Tutorial lernen wir anhand von Beispielen verschiedene Algorithmen kennen, die vom Java-Sammlungsframework bereitgestellt werden.

Das Java-Sammlungsframework bietet verschiedene Algorithmen, mit denen in Datenstrukturen gespeicherte Elemente bearbeitet werden können.

Algorithmen in Java sind statische Methoden, mit denen verschiedene Operationen an Sammlungen ausgeführt werden können.

Da Algorithmen für verschiedene Sammlungen verwendet werden können, werden diese auch als generische Algorithmen bezeichnet .

Sehen wir uns die Implementierung verschiedener Methoden an, die im Sammlungsframework verfügbar sind.

1. Sortieren mit sort ()

Die sort()vom Sammlungsframework bereitgestellte Methode wird zum Sortieren von Elementen verwendet. Beispielsweise,

 import java.util.ArrayList; import java.util.Collections; class Main ( public static void main(String() args) ( // Creating an array list ArrayList numbers = new ArrayList(); // Add elements numbers.add(4); numbers.add(2); numbers.add(3); System.out.println("Unsorted ArrayList: " + numbers); // Using the sort() method Collections.sort(numbers); System.out.println("Sorted ArrayList: " + numbers); ) ) 

Ausgabe

 Unsortierte ArrayList: (4, 2, 3) Sortierte ArrayList: (2, 3, 4) 

Hier erfolgt die Sortierung in natürlicher Reihenfolge (aufsteigende Reihenfolge). Wir können jedoch die Sortierreihenfolge der sort()Methode über die Comparator-Schnittstelle anpassen .

Weitere Informationen finden Sie unter Java-Sortierung.

2. Mischen mit shuffle ()

Die shuffle()Methode des Java-Sammlungsframeworks wird verwendet, um jede in der Datenstruktur vorhandene Reihenfolge zu zerstören. Es macht genau das Gegenteil der Sortierung. Beispielsweise,

 import java.util.ArrayList; import java.util.Collections; class Main ( public static void main(String() args) ( // Creating an array list ArrayList numbers = new ArrayList(); // Add elements numbers.add(1); numbers.add(2); numbers.add(3); System.out.println("Sorted ArrayList: " + numbers); // Using the shuffle() method Collections.shuffle(numbers); System.out.println("ArrayList using shuffle: " + numbers); ) ) 

Ausgabe

 Sortierte ArrayList: (1, 2, 3) ArrayList mit Shuffle: (2, 1, 3) 

Wenn wir das Programm ausführen, gibt die shuffle()Methode eine zufällige Ausgabe zurück.

Der Mischalgorithmus wird hauptsächlich in Spielen verwendet, in denen eine zufällige Ausgabe gewünscht wird.

3. Routinemäßige Datenmanipulation

In Java bietet das Sammlungsframework verschiedene Methoden, mit denen Daten bearbeitet werden können.

  • reverse() - kehrt die Reihenfolge der Elemente um
  • fill() - Ersetzen Sie jedes Element in einer Sammlung durch den angegebenen Wert
  • copy() - Erstellt eine Kopie der Elemente von der angegebenen Quelle zum Ziel
  • swap() - vertauscht die Position zweier Elemente in einer Sammlung
  • addAll() - Fügt alle Elemente einer Sammlung einer anderen Sammlung hinzu

Beispielsweise,

 import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); System.out.println("ArrayList1: " + numbers); // Using reverse() Collections.reverse(numbers); System.out.println("Reversed ArrayList1: " + numbers); // Using swap() Collections.swap(numbers, 0, 1); System.out.println("ArrayList1 using swap(): " + numbers); ArrayList newNumbers = new ArrayList(); // Using addAll newNumbers.addAll(numbers); System.out.println("ArrayList2 using addAll(): " + newNumbers); // Using fill() Collections.fill(numbers, 0); System.out.println("ArrayList1 using fill(): " + numbers); // Using copy() Collections.copy(newNumbers, numbers); System.out.println("ArrayList2 using copy(): " + newNumbers); ) ) 

Ausgabe

 ArrayList1: (1, 2) Umgekehrte ArrayList1: (2, 1) ArrayList1 mit swap (): (1, 2) ArrayList2 mit addALl (): (1, 2) ArrayList1 mit fill (): (0, 0) ArrayList2 mit copy (): (0, 0) 

Hinweis : Während der Ausführung der copy()Methode sollten beide Listen dieselbe Größe haben.

4. Suchen mit binarySearch ()

Die binarySearch()Methode des Java-Sammlungsframeworks sucht nach dem angegebenen Element. Es gibt die Position des Elements in den angegebenen Sammlungen zurück. Beispielsweise,

 import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); // Using binarySearch() int pos = Collections.binarySearch(numbers, 3); System.out.println("The position of 3 is " + pos); ) ) 

Ausgabe

 Die Position von 3 ist 2. 

Hinweis : Die Sammlung sollte vor dem Ausführen der binarySearch()Methode sortiert werden.

Weitere Informationen finden Sie unter Java Binary Search.

5. Zusammensetzung

  • frequency() - gibt zurück, wie oft ein Element in der Sammlung vorhanden ist
  • disjoint() - prüft, ob zwei Sammlungen ein gemeinsames Element enthalten

Beispielsweise,

 import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(2); System.out.println("ArrayList1: " + numbers); int count = Collections.frequency(numbers, 2); System.out.println("Count of 2: " + count); ArrayList newNumbers = new ArrayList(); newNumbers.add(5); newNumbers.add(6); System.out.println("ArrayList2: " + newNumbers); boolean value = Collections.disjoint(numbers, newNumbers); System.out.println("Two lists are disjoint: " + value); ) ) 

Ausgabe

 ArrayList1: (1, 2, 3, 2) Anzahl 2: 2 ArrayList2: (5, 6) Zwei Listen sind nicht zusammenhängend: true 

6. Extremwerte finden

Die Methoden min()und max()des Java-Sammlungsframeworks werden verwendet, um die minimalen bzw. maximalen Elemente zu ermitteln. Beispielsweise,

 import java.util.Collections; import java.util.ArrayList; class Main ( public static void main(String() args) ( // Creating an ArrayList ArrayList numbers = new ArrayList(); numbers.add(1); numbers.add(2); numbers.add(3); // Using min() int min = Collections.min(numbers); System.out.println("Minimum Element: " + min); // Using max() int max = Collections.max(numbers); System.out.println("Maximum Element: " + max); ) ) 

Ausgabe

 Minimales Element: 1 Maximales Element: 3 

Interessante Beiträge...