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.