Karakterláncok betűrend szerinti rendezése Java-ban

1. Áttekintés

Ebben az oktatóanyagban bemutatjuk a rendezés módját Húr betűrendben.

Rengeteg oka lehet annak, hogy miért szeretnénk megtenni - az egyik érvényesítés lehet, ha két szó ugyanazokból a karakterkészletekből áll. Így ellenőrizni fogjuk, hogy anagramma-e.

2. Karakterlánc rendezése

Belsőleg, Húr karaktertömböt használ a működéshez. Ezért felhasználhatjuk a toCharArray (): char [] módszerrel rendezze a tömböt és hozzon létre egy újat Húr az eredmény alapján:

@Test void givenString_whenSort_thenSorted () {String abcd = "bdca"; char [] karakterek = abcd.toCharArray (); Tömbök.válogatás (karakterek); String sorted = új karakterlánc (karakterek); assertThat (rendezve) .isEqualTo ("abcd"); }

A Java 8-ban kihasználhatjuk a Folyam API a. Rendezéséhez Húr nekünk:

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

Itt ugyanazt az algoritmust használjuk, mint az első példát, de a char tömböt a Stream rendezve () módszer.

Figyelje meg, hogy a karakterek azok az ASCII kódjai szerint rendezve, ezért az elején mindig nagybetűk fordulnak elő. Tehát, ha "abC" -t szeretnénk rendezni, akkor a rendezés eredménye "Cab" lesz.

Megoldásához szükségünk van transzformálja a karakterláncot toLowerCase () módszer. Ezt az Anagram validátor példánkban fogjuk megtenni.

3. Tesztelés

A rendezés teszteléséhez elkészítjük az anagramma validátort. Mint említettük, egy anagramma akkor fordul elő, amikor két különböző szó vagy mondat ugyanazon karakterkészletből áll.

Vessünk egy pillantást a mi AnagramValidator osztály:

public class AnagramValidator {public static boolean isValid (String text, String anagram) {text = Prepar (text); anagramma = felkészülés (anagramma); Karakterlánc sortedText = rendezés (szöveg); String sortedAnagram = rendezés (anagram); return sortedText.equals (sortedAnagram); } privát statikus karakterlánc-rendezés (karakterlánc-szöveg) {char [] karakterek = előkészítés (szöveg) .toCharArray (); Tömbök.válogatás (karakterek); return new String (karakterek); } privát statikus karakterlánc előkészítése (karakterlánc szöveg) {return text.toLowerCase () .trim () .replaceAll ("\ s +", ""); }}

Most felhasználjuk a rendezési módszerünket és ellenőrizzük, hogy az anagramma érvényes-e:

@Test void givenValidAnagrams_whenSorted_thenEqual () {logikai isValidAnagram = AnagramValidator.isValid ("Avida dollárok", "Salvador Dali"); assertTrue (isValidAnagram); }

4. Következtetés

Ebben a gyors cikkben megmutattuk, hogyan Húr kétféle módon lehet ábécé sorrendbe rendezni. Emellett megvalósítottuk az anagramma validátort, amely a karakterlánc-rendezési módszert használta.

Szokás szerint a teljes kód elérhető a GitHub projekten.