Karakterlánc keresése egy ArrayList-ben
1. Áttekintés
Ebben az oktatóanyagban megvizsgáljuk különböző módon keresni a Húr egy an Tömb lista. Célunk az, hogy ellenőrizzük, van-e egy adott, nem üres karaktersorozat a Tömb lista és visszaadni egy listát az összes egyező elemgel.
2. Alap hurok
Először is használjunk egy alap ciklust az adott keresési karakterláncban a karakterek sorrendjének kereséséhez a tartalmazza a Java módszere Húr osztály:
public List findUsingLoop (String keresés, List lista) {Lista egyezik = new ArrayList (); for (String str: list) {if (str.contains (search)) {egyezik.add (str); }} visszatérő mérkőzések; }
3. Patakok
A Java 8 Streams API kompaktabb megoldást nyújt számunkra funkcionális műveletek használatával.
Először a szűrő() módszer a keresési karakterlánc keresésére a beviteli listánkban, majd a gyűjt módszer a megfelelő elemeket tartalmazó lista létrehozására és feltöltésére:
public List findUsingStream (String search, List list) {List matchingElements = list.stream () .filter (str -> str.trim (). tartalmazza (keresés)) .collect (Collectors.toList ()); return matchingElements; }
4. Harmadik fél könyvtárai
Ha nem tudjuk használni a Java 8 Stream API-t, megnézhetünk harmadik féltől származó könyvtárakat, mint például a Commons Collections és a Google Guava.
Ahhoz, hogy felhasználhassuk, csak fel kell tennünk a guava, a Commons gyűjtemények vagy mindkét függőséget a pom.xml fájlunkba:
com.google.guava guava 23.0 org.apache.commons commons-gyűjtemények4 4.1
4.1. Commons Gyűjtemények
A Commons Collections egy módszert biztosít számunkra IterableUtils.filteredIterable () ami megfelel az adottnak Iterálható ellen a Állítmány.
Hívjuk IterableUtils.filteredIterable (), meghatározva az állítmányt, hogy csak azokat az elemeket válassza ki, amelyek tartalmazzák a keresési karakterláncot. Akkor használjuk IteratorUtils.toList () a Iterálható a Lista:
public List findUsingCommonsCollection (String search, List list) {Iterable result = IterableUtils.filteredIterable (list, new Predicate () {public boolean assessment (String listElement) {return listElement.contains (search);}}); adja vissza az IteratorUtils.toList (eredmény.iterátor ()); }
4.2. Google Guava
A Google Guava az Apache-hoz hasonló megoldást kínál filteredIterable () a ... val Iterables.filter () módszer. Használjuk a lista szűrésére, és csak a keresési karakterláncunknak megfelelő elemeket adjuk vissza:
public List findUsingGuava (String keresés, List lista) {Iterable eredmény = Iterables.filter (list, Predicates.containsPattern (keresés)); return Lists.newArrayList (eredmény.iterátor ()); }
5. Következtetés
Ebben az oktatóanyagban különböző módszereket tanultunk meg a Húr egy an Tömb lista. Először egy egyszerűvel kezdtük mert ciklust, majd a Stream API használatával folytatta a megközelítést. Végül láttunk néhány példát két harmadik féltől származó könyvtár - a Google Guava és a Commons Collections - felhasználásával.
A teljes példák a GitHub oldalon érhetők el.