Eine Zeichenfolge in Java alphabetisch sortieren

1. Übersicht

In diesem Tutorial zeigen wir, wie String alphabetisch sortiert wird .

Es kann viele Gründe geben, warum wir dies tun möchten - einer davon könnte die Validierung sein, wenn zwei Wörter aus demselben Zeichensatz bestehen. Auf diese Weise überprüfen wir, ob es sich um ein Anagramm handelt.

2. Sortieren eines Strings

Intern verwendet String ein Array von Zeichen, um damit zu arbeiten. Daher können wir die toCharArray (): char [] -Methode verwenden, das Array sortieren und basierend auf dem Ergebnis einen neuen String erstellen :

@Test void givenString_whenSort_thenSorted() { String abcd = "bdca"; char[] chars = abcd.toCharArray(); Arrays.sort(chars); String sorted = new String(chars); assertThat(sorted).isEqualTo("abcd"); }

In Java 8 können wir die Stream- API nutzen, um den String für uns zu sortieren :

@Test void givenString_whenSortJava8_thenSorted() { String sorted = "bdca".chars() .sorted() .collect(StringBuilder::new, StringBuilder::appendCodePoint, StringBuilder::append) .toString(); assertThat(sorted).isEqualTo("abcd"); }

Hier verwenden wir denselben Algorithmus wie im ersten Beispiel, sortieren jedoch das char-Array mit der Stream sorted () -Methode.

Beachten Sie, dass die Zeichen nach ihren ASCII-Codes sortiert sind. Daher werden Großbuchstaben immer am Anfang angezeigt. Wenn wir also "abC" sortieren möchten, lautet das Ergebnis der Sortierung "Cab".

Um dies zu lösen, müssen wir den String mit der toLowerCase () -Methode transformieren . Wir werden das in unserem Anagram-Validator-Beispiel tun.

3. Testen

Um die Sortierung zu testen, erstellen wir den Anagramm-Validator. Wie bereits erwähnt, tritt ein Anagramm auf, wenn zwei verschiedene Wörter oder Sätze aus demselben Zeichensatz bestehen.

Werfen wir einen Blick auf unsere AnagramValidator- Klasse:

public class AnagramValidator { public static boolean isValid(String text, String anagram) { text = prepare(text); anagram = prepare(anagram); String sortedText = sort(text); String sortedAnagram = sort(anagram); return sortedText.equals(sortedAnagram); } private static String sort(String text) { char[] chars = prepare(text).toCharArray(); Arrays.sort(chars); return new String(chars); } private static String prepare(String text) { return text.toLowerCase() .trim() .replaceAll("\\s+", ""); } }

Jetzt werden wir unsere Sortiermethode verwenden und überprüfen, ob das Anagramm gültig ist:

@Test void givenValidAnagrams_whenSorted_thenEqual() { boolean isValidAnagram = AnagramValidator.isValid("Avida Dollars", "Salvador Dali"); assertTrue(isValidAnagram); }

4. Fazit

In diesem kurzen Artikel haben wir gezeigt, wie der String auf zwei Arten in alphabetischer Reihenfolge sortiert werden kann. Außerdem haben wir den Anagramm-Validator implementiert, der die String-Sortiermethode verwendet.

Wie üblich ist der vollständige Code im GitHub-Projekt verfügbar.