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.