Mengurutkan String Secara Abjad di Java

1. Ikhtisar

Dalam tutorial ini, kami akan menunjukkan cara mengurutkan String menurut abjad.

Mungkin ada banyak alasan mengapa kami ingin melakukannya - salah satunya bisa jadi validasi jika dua kata terdiri dari kumpulan karakter yang sama. Dengan begitu, kami akan memverifikasi apakah itu anagram.

2. Menyortir String

Secara internal, String menggunakan larik karakter untuk dioperasikan. Oleh karena itu, kita dapat menggunakan metode toCharArray (): char [] , mengurutkan array dan membuat String baru berdasarkan hasil:

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

Di Java 8, kita dapat memanfaatkan Stream API untuk mengurutkan String untuk kita:

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

Di sini, kami menggunakan algoritme yang sama seperti contoh pertama, tetapi mengurutkan array karakter menggunakan metode Stream sort () .

Perhatikan bahwa karakter diurutkan berdasarkan kode ASCII-nya , oleh karena itu huruf kapital akan selalu muncul di awal. Jadi, jika kita ingin mengurutkan "abC", hasil pengurutannya adalah "Cab".

Untuk mengatasinya, kita perlu mengubah string dengan metode toLowerCase () . Kami akan melakukannya di contoh validator Anagram kami.

3. Pengujian

Untuk menguji pengurutan, kami akan membuat validator anagram. Seperti yang disebutkan, anagram terjadi ketika dua kata atau kalimat yang berbeda merupakan gabungan dari kumpulan karakter yang sama.

Mari kita lihat kelas AnagramValidator kami :

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+", ""); } }

Sekarang, kita akan menggunakan metode pengurutan dan memverifikasi apakah anagram valid:

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

4. Kesimpulan

Dalam artikel singkat ini, kami telah menunjukkan bagaimana String dapat diurutkan dalam urutan abjad dalam dua cara. Juga, kami telah mengimplementasikan validator anagram yang menggunakan metode penyortiran string.

Seperti biasa, kode lengkap tersedia di proyek GitHub.