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.