Niz u konverzije niza
1. Pregled
U ovom ćemo kratkom vodiču pogledati pretvaranje niza niza ili cijelih brojeva u niz i natrag.
To možemo postići vanilijom Java i Java korisnim klasama iz često korištenih knjižnica.
2. Pretvori niz u niz
Ponekad moramo pretvoriti niz nizova ili cijelih brojeva u niz, ali nažalost, ne postoji izravna metoda za izvođenje ove pretvorbe.
Zadana implementacija toString () metoda na nizu vraća nešto poput Ljava.lang.String; @ 74a10858 koji nas samo informira o vrsti objekta i hash kodu.
Međutim java.util.Arrays klasa uslužnih programa podržava manipulaciju nizom i nizovima, uključujući a toString () metoda za nizove.
Nizovi.toString () vraća niz sa sadržajem ulaznog polja. Stvoreni novi niz je popis elemenata niza odijeljen zarezima, okružen uglastim zagradama (“[]”):
Niz [] strArray = {"jedan", "dva", "tri"}; String joinedString = Arrays.toString (strArray); assertEquals ("[jedan, dva, tri]", joinedString);
int [] intArray = {1,2,3,4,5}; joinedString = Nizovi.toString (intArray); assertEquals ("[1, 2, 3, 4, 5]", joinedString);
I, iako je sjajno što Arrays.toString (int []) ovaj gumb za nas ovako lijepo postavlja ovaj zadatak, usporedimo ga s različitim metodama koje možemo samostalno implementirati.
2.1. StringBuilder.append ()
Za početak pogledajmo kako izvršiti ovu konverziju StringBuilder.append ():
String [] strArray = {"Pretvori", "Niz", "Sa", "Java"}; StringBuilder stringBuilder = novi StringBuilder (); za (int i = 0; i <strArray.length; i ++) {stringBuilder.append (strArray [i]); } String joinedString = stringBuilder.toString (); assertEquals ("ConvertArrayWithJava", joinedString);
Uz to, za pretvorbu niza cijelih brojeva možemo koristiti isti pristup, ali umjesto toga nazvati Integer.valueOf (intArray [i]) prilikom dodavanja na našu StringBuilder.
2.2. API Java Streams
Java 8 i novije verzije nudi String.join () metoda koja stvara novi niz spajanjem elemenata i odvajanjem navedenim graničnikom, u našem slučaju samo praznim nizom:
String joinedString = String.join ("", novi String [] {"Pretvori", "Sa", "Java", "Potoci"}); assertEquals ("ConvertWithJavaStreams", joinedString);
Uz to možemo koristiti i Kolekcionari.joining () metoda iz Java Streams API-ja koja spaja nizove iz Stream istim redoslijedom kao i njegov izvorni niz:
String joinedString = Nizovi .stream (novi String [] {"Pretvori", "Sa", "Java", "Potoci"}) .collect (Collectors.joining ()); assertEquals ("ConvertWithJavaStreams", joinedString);
2.3. StringUtils.join ()
A Apache Commons Lang nikada ne smije biti izostavljen od takvih zadataka.
The StringUtils razred ima nekoliko StringUtils.join () metode koje se mogu koristiti za promjenu niza nizova u jedan niz:
String joinedString = StringUtils.join (novi String [] {"Pretvori", "Sa", "Apache", "Commons"}); assertEquals ("ConvertWithApacheCommons", joinedString);
2.4. Joiner.join ()
I da ne duljim, Guava smješta isto sa svojim Stolar razred. The Stolar klasa nudi tečan API i nudi pregršt pomoćnih metoda za spajanje podataka.
Na primjer, možemo dodati graničnik ili preskočiti null vrijednosti:
String joinedString = Joiner.on ("") .skipNulls () .join (novi String [] {"Pretvori", "Sa", "Guava", null}); assertEquals ("ConvertWithGuava", joinedString);
3. Pretvori niz u niz žica
Slično tome, ponekad moramo podijeliti niz u niz koji sadrži neku podskupinu ulaznog niza podijeljenu navedenim graničnikom, da vidimo kako i to možemo učiniti.
3.1. String.split ()
Prvo, krenimo dijeljenjem razmaka pomoću String.split () metoda bez graničnika:
Niz [] strArray = "loremipsum" .split ("");
Koji proizvodi:
["l", "o", "r", "e", "m", "i", "p", "s", "u", "m"]
3.2. StringUtils.split ()
Drugo, pogledajmo ponovno na StringUtils razred iz Apacheove biblioteke Commons Lang.
Među mnogim nulo-sigurnim metodama na objektima niza možemo pronaći StringUtils.split (). Prema zadanim postavkama pretpostavlja razmak između razmaka:
String [] splitted = StringUtils.split ("lorem ipsum dolor sit amet");
Što rezultira:
["lorem", "ipsum", "dolor", "sjedi", "amet"]
Ali, možemo pružiti i graničnik ako želimo.
3.3. Splitter.split ()
Napokon, možemo i koristiti Guava sa svojim Cjepidlaka tečni API:
Popis rezultataList = Splitter.on ('') .trimResults () .omitEmptyStrings () .splitToList ("lorem ipsum dolor sit amet"); String [] strArray = resultList.toArray (novi niz [0]);
Što generira:
["lorem", "ipsum", "dolor", "sjedi", "amet"]
4. Zaključak
U ovom smo članku ilustrirali kako pretvoriti niz u niz i natrag koristeći jezgru Java i popularne uslužne knjižnice.
Naravno, implementacija svih ovih primjera i isječaka koda može se naći na GitHubu.