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.