Preveďte reťazec oddelený čiarkami na zoznam v jazyku Java

1. Prehľad

V tomto výučbe sa pozrieme na prevod čiarkami String do a Zoznam strún. Ďalej transformujeme čiarku String celých čísel do a Zoznam z Celé čísla.

2. Závislosti

Niektoré z metód, ktoré použijeme na svoje konverzie, vyžadujú knižnice Apache Commons Lang 3 a Guava. Pridajme ich teda k našim pom.xml spis:

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

3. Definovanie nášho príkladu

Než začneme, definujme si dva vstupné reťazce, ktoré použijeme v našich príkladoch. Prvý reťazec, krajinách, obsahuje niekoľko reťazcov oddelených čiarkou a druhý reťazec, hodnosti, obsahuje čísla oddelené čiarkou:

Krajiny reťazca = "Rusko, Nemecko, Anglicko, Francúzsko, Taliansko"; Poradie reťazcov = "1,2,3,4,5,6,7";

V celom tomto výučbe prevedieme vyššie uvedené reťazce na zoznamy reťazcov a celých čísel, do ktorých budeme ukladať:

Zoznam prevedenýCountriesList; Zoznam prevedenýRankList;

Nakoniec, po vykonaní našich konverzií budú očakávané výstupy:

Zoznam expectCountriesList = Arrays.asList ("Rusko", "Nemecko", "Anglicko", "Francúzsko", "Taliansko"); Zoznam očakávanýchRanksList = Arrays.asList (1, 2, 3, 4, 5, 6, 7);

4. Core Java

V našom prvom riešení prevedieme reťazec na zoznam reťazcov a celých čísel pomocou jadra Java.

Najskôr náš reťazec rozdelíme do poľa reťazcov pomocou rozdeliť, a String triedna úžitková metóda. Potom použijeme Arrays.asList na našom novom poli reťazcov, aby sme ho previedli na zoznam reťazcov:

Zoznam prevedenýCountriesList = Arrays.asList (countries.split (",", -1));

Teraz urobme z nášho reťazca čísel zoznam celých čísel.

Použijeme rozdeliť metóda na premenu nášho číselného reťazca na pole reťazcov. Potom prevedieme každý reťazec v našom novom poli na celé číslo a pridáme ho do nášho zoznamu:

Reťazec [] konvertovanýRankArray = ranks.split (","); Zoznam prevedenýRankList = nový ArrayList (); pre (Číslo reťazca: prevedenéRankArray) {převedenéRankList.add (Integer.parseInt (číslo.trim ())); }

V obidvoch týchto prípadoch používame rozdeliť úžitková metóda z String triedy, aby sa reťazec oddelený čiarkou rozdelil na pole reťazcov.

Všimnite si, že preťažený rozdeliť metóda použitá na prevod našich krajinách reťazec obsahuje druhý parameter limit, pre ktoré sme poskytli hodnotu ako -1. Týmto sa určuje, že vzor oddeľovača by sa mal použiť čo najviac ráz.

The rozdeliť metóda, ktorú sme použili na rozdelenie nášho reťazca celých čísel (hodnosti) používa nulu ako limit, a tak ignoruje prázdne reťazce, zatiaľ čo rozdeliť použitý na krajinách reťazec uchová prázdne reťazce vo vrátenom poli.

5. Prúdy Java

Teraz implementujeme rovnaké konverzie pomocou rozhrania Java Stream API.

Najskôr prevedieme našu krajinách reťazec do poľa reťazcov pomocou znaku rozdeliť metóda v String trieda. Potom použijeme Prúd triedy na konverziu nášho poľa na zoznam reťazcov:

Zoznam prevedenýCountriesList = Stream.of (countries.split (",", -1)) .collect (Collectors.toList ());

Pozrime sa, ako previesť náš reťazec čísel na zoznam celých čísel pomocou a Prúd.

Opäť najskôr prevedieme reťazec čísel na pole reťazcov pomocou znaku rozdeliť metóda a výsledné pole previesť na a Prúd z String pomocou z () metóda v Prúd trieda.

Potom budeme z každého orezajte predný a zadný priestor String na Prúd použitím mapa (Reťazec::obruba).

Ďalej sa prihlásime mapa (Celé číslo :: parseInt) v našom streame previesť každý reťazec v našom Prúd do an Celé číslo.

A nakoniec zavoláme collect (Collectors.toList ()) na Prúd previesť na celočíselný zoznam:

Zoznam prevedenýRankList = Stream.of (ranks.split (",")) .map (String :: trim) .map (Integer :: parseInt) .collect (Collectors.toList ());

6. Apache Commons Lang

V tomto riešení použijeme na uskutočnenie našich konverzií knižnicu Apache Commons Lang3. Apache Commons Lang3 poskytuje niekoľko pomocných funkcií na manipuláciu so základnými triedami Java.

Najskôr náš reťazec rozdelíme do poľa reťazcov pomocou StringUtils.splitPreserveAllTokens. Potom prevedieme naše nové pole reťazcov do zoznamu pomocou Arrays.asList metóda:

Zoznam prevedenýCountriesList = Arrays.asList (StringUtils.splitPreserveAllTokens (country, ","));

Poďme teraz transformovať náš reťazec čísel na zoznam celých čísel.

Opäť použijeme StringUtils.split metóda na vytvorenie poľa reťazcov z nášho reťazca. Potom prevedieme každý reťazec v našom novom poli na celé číslo pomocou Integer.parseInt a pridajte prevedené celé číslo do nášho zoznamu:

String [] převedenéRankArray = StringUtils.split (hodnosti, ","); Zoznam prevedenýRankList = nový ArrayList (); pre (Číslo reťazca: prevedenéRankArray) {převedenéRankList.add (Integer.parseInt (číslo.trim ())); } 

V tomto príklade sme použili splitPreserveAllTokens metóda na rozdelenie našich krajinách reťazec, zatiaľ čo sme použili rozdeliť metóda na rozdelenie našich hodnosti struna.

Aj keď obe tieto funkcie delia reťazec na pole, znak splitPreserveAllTokens zachováva všetky tokeny vrátane prázdnych reťazcov vytvorených susednými oddeľovačmi, zatiaľ čo rozdeliť metóda ignoruje prázdne reťazce.

Takže ak máme prázdne reťazce, ktoré chceme zahrnúť do nášho zoznamu, mali by sme použiť splitPreserveAllTokens namiesto rozdeliť.

7. Guava

Nakoniec použijeme knižnicu Guava na prevedenie našich reťazcov na príslušné zoznamy.

Ak chcete previesť naše krajinách reťazec, najskôr zavoláme Splitter.on s čiarkou ako parametrom určujúcim, na aký znak má byť náš reťazec rozdelený.

Potom použijeme trimResults metóda na našom Rozdeľovač inštancia. Toto bude ignorovať všetky vedúce a koncové biele medzery z vytvorených podreťazcov.

Nakoniec použijeme splitToList metóda na rozdelenie nášho vstupného reťazca a jeho prevedenie na zoznam:

Zoznam prevedenýCountriesList = Splitter.on (",") .trimResults () .splitToList (krajiny);

Teraz preveďme číselný reťazec na zoznam celých čísel.

Reťazec čísel znova prevedieme na zoznam reťazcovrovnakým postupom, aký sme použili vyššie.

Potom použijeme Zoznamy.transformovať metóda, ktorá prijíma náš zoznam reťazcov ako prvý parameter implementácie Funkcia rozhranie ako druhý parameter.

The Funkcia implementácia rozhrania prevádza každý reťazec v našom zozname na celé číslo:

Zoznam prevedenýRankList = Lists.transform (Splitter.on (",") .trimResults () .splitToList (hodnosti), nová funkcia () {@Override public Integer apply (vstup reťazca) {return Integer.parseInt (input.trim () );}}); 

8. Záver

V tomto článku sme konvertovali oddelené čiarkou Struny do zoznamu reťazcov a zoznamu celých čísel. Môžeme však postupovať podobným spôsobom ako previesť a String do zoznamu primitívnych dátových typov.

Ako vždy, kód z tohto článku je k dispozícii na Github.


$config[zx-auto] not found$config[zx-overlay] not found