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.