Hľadá sa reťazec v zozname ArrayList

1. Prehľad

V tejto príručke sa pozrieme na to rôzne spôsoby hľadania a String v an ArrayList. Naším zámerom je skontrolovať, či je v niektorom z prvkov v prvku špecifická neprázdna sekvencia znakov ArrayList a vráti zoznam so všetkými zodpovedajúcimi prvkami.

2. Základné opakovanie

Najskôr pomocou základnej slučky vyhľadáme pomocou znaku postupnosť znakov v danom hľadanom reťazci obsahuje metóda Java String trieda:

public List findUsingLoop (vyhľadávanie reťazcov, zoznam) {Zoznam zápasov = nový ArrayList (); pre (String str: list) {if (str.contains (search)) {match.add (str); }} vrátiť zápasy; } 

3. Prúdy

Rozhranie Java 8 Streams API nám poskytuje kompaktnejšie riešenie pomocou funkčných operácií.

Najskôr použijeme filter () metóda na vyhľadanie nášho vstupného zoznamu pre hľadaný reťazec a potom použijeme zbierať metóda na vytvorenie a vyplnenie zoznamu obsahujúceho zodpovedajúce prvky:

verejný zoznam findUsingStream (vyhľadávanie reťazcov, zoznam zoznamov) {List matchingElements = list.stream () .filter (str -> str.trim (). contains (search)) .collect (Collectors.toList ()); return matchingElements; }

4. Knižnice tretích strán

Ak nemôžeme použiť rozhranie Java 8 Stream API, môžeme sa pozrieť do knižníc tretích strán, ako sú Commons Collections a Google Guava.

Aby sme ich mohli použiť, stačí do nášho súboru pom.xml pridať Guava, Commons Collections alebo obe závislosti:

 com.google.guava guava 23.0 org.apache.commons commons-collections4 4.1 

4.1. Spoločné zbierky

Commons Collections nám poskytuje metódu IterableUtils.filteredIterable () ktoré sa zhodujú s daným Iterable proti a Predikát.

Zavoláme IterableUtils.filteredIterable (), definujúc predikát tak, aby vybral iba tie prvky, ktoré obsahujú hľadaný reťazec. Potom použijeme IteratorUtils.toList () previesť Iterable do a Zoznam:

public List findUsingCommonsCollection (vyhľadávanie reťazcov, zoznam zoznamov) {Iterable result = IterableUtils.filteredIterable (list, new Predicate () {public boolean evaluate (String listElement) {return listElement.contains (search);}}); vrátiť IteratorUtils.toList (result.iterator ()); } 

4.2. Google Guava

Google Guava ponúka podobné riešenie ako Apache filtrovanýZmeniteľný () s Iterables.filter () metóda. Použijeme ho na filtrovanie zoznamu a vrátenie iba prvkov zodpovedajúcich nášmu vyhľadávaciemu reťazcu:

verejný zoznam findUsingGuava (hľadanie reťazcov, zoznam) {Iterable result = Iterables.filter (list, Predicates.containsPattern (vyhľadávanie)); návrat Lists.newArrayList (result.iterator ()); }

5. Záver

V tomto tutoriáli sme sa naučili rôzne spôsoby hľadania String v an ArrayList. Najprv sme začali s jednoduchým pre slučky a potom pokračoval v prístupe pomocou Stream API. Na záver sme videli niekoľko príkladov použitia dvoch knižníc tretích strán - Google Guava a Commons Collections.

Kompletné príklady sú k dispozícii na GitHub.


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