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.