Traženje niza u ArrayListu

1. Pregled

U ovom uputstvu ćemo pogledati različiti načini pretraživanja Niz u an ArrayList. Namjera nam je provjeriti je li određeni neprazan niz znakova prisutan u bilo kojem od elemenata u ArrayList i vratiti popis sa svim odgovarajućim elementima.

2. Osnovno petlje

Prvo, upotrijebimo osnovnu petlju za pretraživanje niza znakova u zadanom nizu pretraživanja pomoću sadrži metoda Jave Niz razred:

javni popis findUsingLoop (Pretraživanje nizova, popis popisa) {Popis odgovara = novi ArrayList (); for (String str: list) {if (str.contains (search)) {matches.add (str); }} uzvratne utakmice; } 

3. Potoci

API Java 8 Streams pruža nam kompaktnije rješenje pomoću funkcionalnih operacija.

Prvo ćemo upotrijebiti filtar() metodu za pretraživanje niza za pretraživanje na našem popisu unosa, a zatim ćemo upotrijebiti prikupiti metoda za stvaranje i popunjavanje popisa koji sadrži odgovarajuće elemente:

javni popis findUsingStream (pretraživanje niza, popis popisa) {List matchingElements = list.stream () .filter (str -> str.trim (). sadrži (pretraga)) .collect (Collectors.toList ()); vratiti matchElements; }

4. Knjižnice trećih strana

Ako ne možemo koristiti Java 8 Stream API, možemo pogledati biblioteke trećih strana poput Commons Collections i Google Guava.

Da bismo ih koristili, samo moramo dodati Guavu, Commons Collections ili obje ovisnosti u našu datoteku pom.xml:

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

4.1. Commons Zbirke

Commons Collections pruža nam metodu IterableUtils.filteredIterable () koji odgovara zadanom Iterativ protiv a Predikat.

Nazovimo IterableUtils.filteredIterable (), definirajući predikat da odabere samo one elemente koji sadrže niz za pretraživanje. Zatim ćemo upotrijebiti IteratorUtils.toList () pretvoriti Iterativ do a Popis:

javni popis findUsingCommonsCollection (Pretraživanje niza, popis popisa) {Iterable rezultat = IterableUtils.filteredIterable (list, novi Predikat () {public boolean evaluacija (String listElement) {return listElement.contains (search);}}); vratiti IteratorUtils.toList (result.iterator ()); } 

4.2. Google Guava

Google Guava nudi slično rješenje kao Apache filteredIterable () s Iterables.filter () metoda. Upotrijebimo ga za filtriranje popisa i vraćanje samo elemenata koji se podudaraju s našim nizom pretraživanja:

javni popis findUsingGuava (pretraga niza, popis popisa) {Iterable rezultat = Iterables.filter (list, Predicates.containsPattern (search)); return Lists.newArrayList (result.iterator ()); }

5. Zaključak

U ovom uputstvu naučili smo različite načine pretraživanja a Niz u an ArrayList. Prvo smo započeli s jednostavnim za petlje, a zatim nastavio s pristupom koristeći Stream API. Napokon smo vidjeli nekoliko primjera korištenja dvije biblioteke treće strane - Google Guava i Commons Collections.

Cjeloviti primjeri dostupni su na GitHubu.