Vesszővel elválasztott karakterlánc konvertálása Java-listává

1. Áttekintés

Ebben az oktatóanyagban vesszővel elválasztva konvertálunk Húr ba be Lista húrokból. Ezenkívül vesszővel elválasztva alakítjuk át Húr egész számoktól a-ig Lista nak,-nek Egész számok.

2. Függőségek

Néhány konverziónkhoz használt módszer megköveteli az Apache Commons Lang 3 és a Guava könyvtárakat. Tehát tegyük hozzá őket a mi pom.xml fájl:

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

3. Példánk meghatározása

Mielőtt elkezdenénk, definiáljunk két bemeneti karakterláncot, amelyeket a példáinkban használunk. Az első karakterlánc, országok, vesszővel elválasztva tartalmaz több karakterláncot, a második pedig rangok, vesszővel elválasztott számokat tartalmaz:

Vonós országok = "Oroszország, Németország, Anglia, Franciaország, Olaszország"; Húr rangok = "1,2,3,4,5,6,7";

És ebben az oktatóanyagban a fenti karakterláncokat karakterláncok és egészek listájává konvertáljuk, amelyekben tároljuk:

List convertCountriesList; List convertRankList;

Végül, miután elvégeztük a konverzióinkat, a várható eredmények a következők lesznek:

List várhatóCountriesList = Arrays.asList ("Oroszország", "Németország", "Anglia", "Franciaország", "Olaszország"); List várhatóRanksList = Arrays.asList (1, 2, 3, 4, 5, 6, 7);

4. Core Java

Első megoldásunkban egy karakterláncot konvertálunk stringek és egészek listájává a Java Java segítségével.

Először a karakterláncot osztjuk sztringek tömbjére hasított, a Húr osztály hasznossági módszere. Akkor használjuk Tömbök.asList az új karakterlánc-tömbön, hogy azt karakterláncok listájává alakítsuk át:

List convertCountriesList = Arrays.asList (országok.split (",", -1));

Fordítsuk most a számok sorát egész számok listájára.

Használjuk a hasított módszer, amellyel számhúrunkat konvertálhatjuk stringek tömbjévé. Ezután az új tömb minden egyes karakterláncát egész számra konvertáljuk, és hozzáadjuk a listánkhoz:

Karakterlánc [] convertRankArray = ranks.split (","); List convertRankList = new ArrayList (); for (String szám: convertRankArray) {convertRankList.add (Integer.parseInt (szám.trim ())); }

Mindkét esetben a hasított hasznossági módszer a Húr osztály a vesszővel elválasztott karakterlánc szétválasztására tömbre.

Vegye figyelembe, hogy a túlterhelt hasított a mi konvertálásához használt módszer országok string tartalmazza a második paramétert határ, amelyhez -1 értéket adtunk meg. Ez meghatározza, hogy az elválasztó mintát a lehető legtöbbször kell alkalmazni.

A hasított módszer, amelyet az egész karakterlánc (rangsorol) nulla értéket használ határ, és így figyelmen kívül hagyja az üres húrokat, míg a hasított használt a országok string megtartja az üres karakterláncokat a visszatérő tömbben.

5. Java adatfolyamok

Most ugyanazokat a konverziókat hajtjuk végre a Java Stream API segítségével.

Először megtérítjük országok karaktersorozat stringek tömbjébe a hasított módszer a Húr osztály. Akkor használjuk a Folyam osztály, hogy tömbünket karakterláncokká alakítsuk át:

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

Lássuk, hogyan alakíthatjuk át a számláncunkat egész számok listájává az a használatával Folyam.

Ismét először a számsorozatot konvertáljuk stringek tömbjévé a hasított metódust és konvertálja a kapott tömböt Folyam nak,-nek Húr használni a nak,-nek() módszer a Folyam osztály.

Aztán meglesz vágja le a vezető és a hátsó tereket mindegyikről Húr a Folyam felhasználásával térkép (karakterlánc::trim).

Ezután jelentkezünk térkép (egész szám: parseInt) a mi adatfolyamunkon, hogy átalakítsuk a Folyam egy Egész szám.

És végül felhívjuk gyűjt (Collectors.toList ()) a Folyam konvertálni egész listává:

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

6. Apache Commons Lang

Ebben a megoldásban az Apache Commons Lang3 könyvtárat fogjuk használni a konverziók végrehajtásához. Az Apache Commons Lang3 számos segítő funkcióval rendelkezik az alapvető Java osztályok manipulálására.

Először a karakterláncot osztjuk sztringek tömbjére StringUtils.splitPreserveAllTokens. Ezután az új string tömböt listává alakítjuk a használatával Tömbök.asList módszer:

List convertCountriesList = Arrays.asList (StringUtils.splitPreserveAllTokens (országok, ","));

Most alakítsuk át a számokból álló sorunkat egész számok listájává.

Ismét használjuk a StringUtils.split metódus a karakterláncok tömbjének létrehozására a karakterláncunkból. Ezután az új tömb minden egyes karakterláncát egész számra konvertáljuk Integer.parseInt és adja hozzá az átalakított egész számot a listánkhoz:

Karakterlánc [] convertRankArray = StringUtils.split (rangsor, ","); List convertRankList = new ArrayList (); for (String szám: convertRankArray) {convertRankList.add (Integer.parseInt (szám.trim ())); } 

Ebben a példában a splitPreserveAllTokens módszer a mi felosztásunkra országok karakterláncot, míg mi a hasított módszer a mi felosztásunkra rangsorol húr.

Annak ellenére, hogy mindkét függvény tömbre osztja a karakterláncot, a splitPreserveAllTokens megőrzi az összes tokent, beleértve a szomszédos elválasztók által létrehozott üres karakterláncokat is, míg a hasított A módszer figyelmen kívül hagyja az üres karakterláncokat.

Tehát, ha üres húrjaink vannak, amelyeket fel akarunk venni a listánkba, akkor a splitPreserveAllTokens ahelyett hasított.

7. Guava

Végül a Guava könyvtár segítségével fogjuk átalakítani a karakterláncokat a megfelelő listákra.

Megtéríteni a mi országok karakterlánc, először hívunk Splitter.on vesszővel a paraméterrel annak megadásához, hogy a karakterláncunk melyik karakterre legyen felosztva.

Akkor használjuk a trimEredmények módszer a mi Hasító példa. Ez figyelmen kívül hagyja a létrehozott részstruktúrák összes vezető és hátsó helyét.

Végül használjuk a splitToList módszer a bemeneti karakterlánc felosztására és listává alakításra:

List convertCountriesList = Splitter.on (",") .trimResults () .splitToList (országok);

Most konvertáljuk a számok karaktersorozatát egész számok listájává.

A számsort ismét konvertáljuk stringek listájáváugyanazt a folyamatot alkalmazva, amelyet fentebb követtünk.

Akkor használjuk a Listák.átalakul metódus, amely elfogadja a karakterláncok listáját az első paraméterként a Funkció interfész, mint második paraméter.

A Funkció Az interfész megvalósítása a listánkban szereplő összes karakterláncot egész számúra konvertálja:

List convertRankList = Lists.transform (Splitter.on (",") .trimResults () .splitToList (rangsor), új függvény () {@Orride public Integer Apply (String input) {return Integer.parseInt (input.trim () );}}); 

8. Következtetés

Ebben a cikkben vesszővel elválasztottakat alakítottunk át Húrok karakterláncokba és egész számok listájába. Ugyanakkor hasonló folyamatokat követhetünk a Húr a primitív adattípusok listájába.

Mint mindig, a cikk kódja is elérhető a Githubon.