CodeGym /Kurse /JAVA 25 SELF /Klasse Arrays: sort, fill, copyOf, equals

Klasse Arrays: sort, fill, copyOf, equals

JAVA 25 SELF
Level 7 , Lektion 5
Verfügbar

1. Einführung

Arrays in Java sind ein mächtiges Werkzeug, doch der Basissyntax stößt schnell an Routineaufgaben. Hier hilft die Klasse java.util.Arrays – eine Sammlung statischer Methoden zur Arbeit mit Arrays: Sortieren, Kopieren, Vergleichen, formatierte Ausgabe und mehr. Instanzen müssen nicht erstellt werden – alle Methoden sind statisch und werden über den Klassennamen aufgerufen.

Um die Methoden zu verwenden, fügen Sie am Anfang der Datei den Import hinzu:

import java.util.Arrays;

Wenn der Import fehlt, meldet der Compiler, dass Arrays „nicht gefunden“ ist – das ist kein Bug, sondern erwartetes Verhalten ohne Import.

2. Array sortieren: Arrays.sort

Wie Arrays.sort funktioniert

Syntax


Arrays.sort(array);
Arrays.sort(array, fromIndex, toIndex);
Sortieren des gesamten Arrays oder eines Teilbereichs

Die Methode sortiert in place – sie verändert das ursprüngliche Array und liefert kein neues zurück. Sie möchten die ursprüngliche Reihenfolge behalten? Kopieren Sie das Array zuerst.

Beispiel: Sortieren eines int-Arrays

int[] scores = {5, 2, 9, 1, 7};
Arrays.sort(scores); // Aufsteigend sortieren

System.out.println("Sortiertes Array: " + Arrays.toString(scores));
// Gibt aus: [1, 2, 5, 7, 9]

Beispiel: Sortieren eines String-Arrays

String[] names = {"John", "Peter", "Anne", "Rutger"};
Arrays.sort(names);

System.out.println(Arrays.toString(names));
// [Anne, Rutger, Peter, John]

Wichtig: Strings werden lexikografisch (alphabetisch) sortiert, Zahlen in aufsteigender Reihenfolge.

Sortieren eines Array-Ausschnitts

int[] arr = {7, 5, 3, 1, 9, 8};
Arrays.sort(arr, 1, 4); // sortiert die Elemente mit den Indizes 1 bis einschließlich 3 (4 ist exklusiv)

System.out.println(Arrays.toString(arr));
// [7, 1, 3, 5, 9, 8]

Besonderheiten

  • In-place-Sortierung: Das ursprüngliche Array wird verändert.
  • Zahlen: aufsteigend; Strings: alphabetisch.
  • Für komplexe Objekte verwenden Sie die Überladungen mit Comparator.

3. Array auffüllen: Arrays.fill

Syntax


Arrays.fill(array, value);
Arrays.fill(array, fromIndex, toIndex, value);
Auffüllen des gesamten Arrays oder eines Bereichs mit einem Wert

Die Methode füllt alle Elemente oder den angegebenen Bereich des Arrays mit demselben Wert.

int[] marks = new int[5];
Arrays.fill(marks, 3); // Alle Elemente sind jetzt 3
System.out.println(Arrays.toString(marks)); // [3, 3, 3, 3, 3]

Einen Teil des Arrays auffüllen

int[] arr = new int[10];
Arrays.fill(arr, 2, 5, 7); // Füllt die Elemente mit den Indizes 2 bis einschließlich 4 (5 ist exklusiv)
System.out.println(Arrays.toString(arr));
// [0, 0, 7, 7, 7, 0, 0, 0, 0, 0]

Ein String-Array auffüllen

String[] guests = new String[4];
Arrays.fill(guests, "Leer");
System.out.println(Arrays.toString(guests)); // [Leer, Leer, Leer, Leer]

4. Array kopieren: Arrays.copyOf und Arrays.copyOfRange

Arrays.copyOf

Syntax


Arrays.copyOf(sourceArray, newLength);
Erstellen einer neuen Kopie mit angegebener Länge

Erstellt ein neues Array und kopiert Elemente aus dem ursprünglichen. Wenn die neue Länge größer als die ursprüngliche ist, wird das „Ende“ mit Standardwerten aufgefüllt (0 für int, null für Referenztypen).

int[] original = {1, 2, 3};
int[] copy = Arrays.copyOf(original, 5);
System.out.println(Arrays.toString(copy)); // [1, 2, 3, 0, 0]

Array verkleinern

int[] shortCopy = Arrays.copyOf(original, 2);
System.out.println(Arrays.toString(shortCopy)); // [1, 2]

Arrays.copyOfRange

Syntax


Arrays.copyOfRange(sourceArray, fromIndex, toIndex);
Kopieren eines Teilarrays in ein neues Array
int[] arr = {10, 20, 30, 40, 50};
int[] mid = Arrays.copyOfRange(arr, 1, 4); // Kopiert die Elemente mit den Indizes 1 bis 3
System.out.println(Arrays.toString(mid)); // [20, 30, 40]

5. Arrays vergleichen: Arrays.equals und Arrays.deepEquals

In Java darf man Arrays nicht mit == vergleichen – damit vergleicht man Referenzen, nicht den Inhalt:

int[] a = {1, 2, 3};
int[] b = {1, 2, 3};
System.out.println(a == b); // false!

Wie vergleicht man Inhalte?


Arrays.equals(array1, array2);
Arrays.deepEquals(matrix1, matrix2);
Flacher und tiefer Vergleich
System.out.println(Arrays.equals(a, b)); // true

Für eindimensionale Arrays verwenden Sie Arrays.equals, für zwei- und mehrdimensionale – Arrays.deepEquals.

Beispiel: Vergleich zweidimensionaler Arrays

int[][] matrix1 = {{1, 2}, {3, 4}};
int[][] matrix2 = {{1, 2}, {3, 4}};

System.out.println(Arrays.equals(matrix1, matrix2));     // false!
System.out.println(Arrays.deepEquals(matrix1, matrix2)); // true

6. Schöne Ausgabe von Arrays: Arrays.toString und Arrays.deepToString

Gibt man ein Array direkt aus, erhält man eine unleserliche Zeichenkette:

int[] arr = {1, 2, 3};
System.out.println(arr); // [I@7a81197d

Syntax


Arrays.toString(array);
Arrays.deepToString(matrix);
Formatierte Ausgabe von ein- und mehrdimensionalen Arrays
System.out.println(Arrays.toString(arr)); // [1, 2, 3]
int[][] matrix = {{1, 2}, {3, 4}};
System.out.println(Arrays.deepToString(matrix)); // [[1, 2], [3, 4]]

7. Typische Fehler im Umgang mit der Klasse Arrays

Fehler Nr. 1: der Versuch, Arrays mit == zu vergleichen
Arrays sind Objekte, und == vergleicht nur Referenzen. Selbst bei gleichen Werten ist das Ergebnis false. Verwenden Sie Arrays.equals (für eindimensionale) oder Arrays.deepEquals (für mehrdimensionale Arrays).

Fehler Nr. 2: vergessen, dass Sortieren das Array in place verändert
Wenn Sie die ursprüngliche Reihenfolge benötigen, erstellen Sie zuerst mit Arrays.copyOf eine Kopie und sortieren Sie dann die Kopie. Andernfalls geht die Reihenfolge des Originals verloren.

Fehler Nr. 3: falsches Verständnis der Grenzen bei Arrays.fill und Arrays.copyOfRange
Die Methoden verwenden ein halboffenes Intervall: Der rechte Index ist exklusiv. Zum Beispiel füllt Arrays.fill(arr, 2, 5, 9) die Indizes 2, 3, 4; das Element mit Index 5 wird nicht berührt.

Fehler Nr. 4: der Versuch, ein Array direkt auszugeben
Der Aufruf System.out.println(arr) druckt eine technische Darstellung. Verwenden Sie Arrays.toString für eindimensionale und Arrays.deepToString für mehrdimensionale Arrays.

Fehler Nr. 5: mehrdimensionale Arrays mit Arrays.equals vergleichen
Die Methode vergleicht nur die oberste Ebene (Referenzen auf innere Arrays). Für den Inhalt verwenden Sie Arrays.deepEquals.

1
Aufgabe
JAVA 25 SELF, Level 7, Lektion 5
Gesperrt
Sortieren der Rennergebnisse 🏃‍♂️
Sortieren der Rennergebnisse 🏃‍♂️
1
Aufgabe
JAVA 25 SELF, Level 7, Lektion 5
Gesperrt
Initialisierung leerer Lagerplätze 📦
Initialisierung leerer Lagerplätze 📦
1
Aufgabe
JAVA 25 SELF, Level 7, Lektion 5
Gesperrt
Zentrale Messwerte der Wetterstation extrahieren ☀️
Zentrale Messwerte der Wetterstation extrahieren ☀️
1
Aufgabe
JAVA 25 SELF, Level 7, Lektion 5
Gesperrt
Vergleich geheimer Zugangscodes 🔐
Vergleich geheimer Zugangscodes 🔐
1
Umfrage/Quiz
Arrays, Level 7, Lektion 5
Nicht verfügbar
Arrays
Einführung in Arrays
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION