Pretvorite niz odvojen zarezom na popis na Javi

1. Pregled

U ovom uputstvu pogledat ćemo pretvaranje odvojenih zarezom Niz u a Popis žica. Uz to ćemo transformirati odvojene zarezom Niz cijelih brojeva do a Popis od Cijeli brojevi.

2. Ovisnosti

Nekoliko metoda koje ćemo koristiti za pretvorbe zahtijevaju knjižnice Apache Commons Lang 3 i Guava. Dakle, dodajmo ih našem pom.xml datoteka:

 org.apache.commons commons-lang3 3.8.1 com.google.guava guava 27.0.1-jre 

3. Definiranje našeg primjera

Prije nego što započnemo, definirajmo dva ulazna niza koja ćemo koristiti u našim primjerima. Prvi niz, zemlje, sadrži nekoliko nizova odvojenih zarezom, a drugi niz, redovi, uključuje brojeve odvojene zarezom:

Zemlje niza = "Rusija, Njemačka, Engleska, Francuska, Italija"; Nizovi u redovima = "1,2,3,4,5,6,7";

I tijekom ovog vodiča pretvorit ćemo gornje nizove u popise nizova i cijele brojeve koje ćemo pohraniti u:

Popis convertCountriesList; Popis convertRankList;

Napokon, nakon što izvršimo pretvorbu, očekivani rezultati bit će:

Navedi popisCountriesList = Arrays.asList ("Rusija", "Njemačka", "Engleska", "Francuska", "Italija"); Popis očekivanihRanksList = Arrays.asList (1, 2, 3, 4, 5, 6, 7);

4. Jezgra Java

U našem prvom rješenju pretvorit ćemo niz u popis nizova i cijelih brojeva pomoću jezgre Java.

Prvo ćemo svoj niz podijeliti u niz žica pomoću podjela, a Niz metoda korisne klase. Zatim ćemo upotrijebiti Nizovi.asList na našem novom nizu nizova kako bismo ga pretvorili u popis nizova:

Popis convertCountriesList = Arrays.asList (countries.split (",", -1));

Pretvorimo sada naš niz brojeva u popis cijelih brojeva.

Koristit ćemo podjela metoda za pretvaranje niza naših brojeva u niz nizova. Zatim ćemo svaki niz u našem novom nizu pretvoriti u cijeli broj i dodati na naš popis:

String [] convertRankArray = rank.split (","); Popis convertRankList = novi ArrayList (); za (Broj niza: convertRankArray) {convertRankList.add (Integer.parseInt (number.trim ())); }

U oba ova slučaja koristimo podjela korisna metoda iz Niz klase za razdvajanje niza odvojenog zarezom u niz nizova.

Imajte na umu da je preopterećen podjela metoda koja se koristi za pretvaranje našeg zemljama string sadrži drugi parametar ograničiti, za koju smo dali vrijednost kao -1. Ovo određuje da obrazac za razdvajanje treba primijeniti što je više puta moguće.

The podjela metodu kojom smo podijelili niz cijelih brojeva (redovima) koristi nulu kao ograničiti, i tako zanemaruje prazne nizove, dok podjela koristi se na zemljama string zadržava prazne nizove u vraćenom nizu.

5. Java potoci

Sada ćemo iste konverzije implementirati pomoću Java Stream API-ja.

Prvo ćemo pretvoriti naš zemljama string u niz nizova pomoću podjela metoda u Niz razred. Zatim ćemo upotrijebiti Stream klasa za pretvaranje našeg niza u popis nizova:

Popis convertCountriesList = Stream.of (countries.split (",", -1)) .collect (Collectors.toList ());

Pogledajmo kako pretvoriti naš niz brojeva u popis cijelih brojeva pomoću a Potok.

Opet ćemo prvo pretvoriti niz brojeva u niz nizova pomoću podjela metodu i pretvorite rezultirajući niz u Stream od Niz koristiti od() metoda u Stream razred.

Onda ćemo izrežite vodeći i prateći prostor s svakog Niz na Stream koristeći karta (niz::obrezati).

Dalje ćemo se prijaviti karta (Integer :: parseInt) na našem streamu za pretvaranje svakog niza u našem Stream do an Cijeli broj.

I na kraju, nazvat ćemo collect (Collectors.toList ()) na Stream da biste ga pretvorili u cjelobrojni popis:

Popis convertRankList = Stream.of (rank.split (",")) .map (String :: trim) .map (Integer :: parseInt) .collect (Collectors.toList ());

6. Apache Commons Lang

U ovom ćemo rješenju koristiti knjižnicu Apache Commons Lang3 za izvršavanje pretvorbe. Apache Commons Lang3 nudi nekoliko pomoćnih funkcija za manipulaciju osnovnim Java klasama.

Prvo ćemo svoj niz podijeliti u niz žica pomoću StringUtils.splitPreserveAllTokens. Zatim ćemo naš novi niz nizova pretvoriti u popis pomoću Nizovi.asList metoda:

Popis convertCountriesList = Arrays.asList (StringUtils.splitPreserveAllTokens (države, ","));

Pretvorimo sada naš niz brojeva u popis cijelih brojeva.

Ponovno ćemo koristiti StringUtils.split metoda za stvaranje niza nizova iz našeg niza. Zatim ćemo svaki niz u našem novom nizu pretvoriti u cijeli broj pomoću Integer.parseInt i dodajte pretvoreni cijeli broj na naš popis:

String [] convertRankArray = StringUtils.split (rangovi, ","); Popis convertRankList = novi ArrayList (); za (Broj niza: convertRankArray) {convertRankList.add (Integer.parseInt (number.trim ())); } 

U ovom smo primjeru koristili splitPreserveAllTokens metoda za razdvajanje naših zemljama string, dok smo koristili podjela metoda za razdvajanje naših redovima niz.

Iako obje ove funkcije dijele niz u niz, splitPreserveAllTokens čuva sve tokene, uključujući prazne nizove stvorene susjednim separatorima, dok podjela metoda zanemaruje prazne nizove.

Dakle, ako imamo prazne nizove za koje želimo da budu uključeni na naš popis, tada bismo trebali koristiti splitPreserveAllTokens umjesto podjela.

7. Guava

Konačno, koristit ćemo knjižnicu Guava da pretvorimo naše nizove u njihove odgovarajuće popise.

Za pretvaranje našeg zemljama string, prvo ćemo nazvati Razdjelnik.na sa zarezom kao parametrom koji određuje na koji znak treba razdvojiti naš niz.

Zatim ćemo upotrijebiti trimResultati metoda na našem Cjepidlaka primjer. Ovo će zanemariti sve vodeće i prateće razmake iz stvorenih podnizova.

Napokon ćemo upotrijebiti splitToList metoda za razdvajanje našeg ulaznog niza i pretvaranje u popis:

Popis convertCountriesList = Splitter.on (",") .trimResults () .splitToList (države);

Sada, pretvorimo niz brojeva u popis cijelih brojeva.

Ponovno ćemo pretvoriti niz brojeva u popis nizovakoristeći isti postupak koji smo slijedili gore.

Zatim ćemo upotrijebiti Popisi.transformirati metoda, koja prihvaća naš popis nizova kao prvi parametar implementacije Funkcija sučelje kao drugi parametar.

The Funkcija implementacija sučelja pretvara svaki niz s našeg popisa u cijeli broj:

Popis convertRankList = Lists.transform (Splitter.on (",") .trimResults () .splitToList (rangovi), nova funkcija () {@Override public Integer apply (String input) {return Integer.parseInt (input.trim () );}}); 

8. Zaključak

U ovom smo članku pretvorili odvojene zarezima Žice u popis nizova i popis cijelih brojeva. Međutim, možemo slijediti slične postupke za pretvaranje a Niz na popis svih primitivnih tipova podataka.

Kao i uvijek, kôd iz ovog članka dostupan je na Githubu.