Searching for a String in an ArrayList

Searching for a String in an ArrayList

In this tutorial, we'll look into different ways to search for a String in an ArrayList. Our intent is to check if a specific non-empty sequence of characters is present in any of the elements in the ArrayList and to return a list with all the matching elements.

1. Basic Looping

First, let's use a basic loop to search the sequence of characters in the given search string using the contains method of Java's String class:

public List<String> findUsingLoop(String search, List<String> list) {
    List<String> matches = new ArrayList<String>();

    for(String str: list) {
        if (str.contains(search)) {
            matches.add(str);
        }
    }

    return matches;
}

2. Streams

The Java 8 Streams API provides us with a more compact solution by using functional operations.

First, we'll use the filter() method to search our input list for the search string, and then, we'll use the collect method to create and populate a list containing the matching elements:

public List<String> findUsingStream(String search, List<String> list) {
    List<String> matchingElements = list.stream()
      .filter(str -> str.trim().contains(search))
      .collect(Collectors.toList());

    return matchingElements;
}

3. Third-Party Libraries

If we cannot use the Java 8 Stream API, we can look at third-party libraries such as Commons Collections and Google Guava.

To use them, we just need to add Guava, Commons Collections, or both dependencies in our pom.xml file:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>23.0</version>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.1</version>
</dependency>

3.1. Commons Collections

Commons Collections provides us with a method IterableUtils.filteredIterable() that matches the given Iterable against a Predicate.

Let's call IterableUtils.filteredIterable(), defining the predicate to select only those elements containing the search string. Then, we'll use IteratorUtils.toList() to convert the Iterable to a List:

public List<String> findUsingCommonsCollection(String search, List<String> list) {
    Iterable<String> result = IterableUtils.filteredIterable(list, new Predicate<String>() {
        public boolean evaluate(String listElement) {
            return listElement.contains(search);
        }
    });

    return IteratorUtils.toList(result.iterator());
}

3.2. Google Guava

Google Guava offers a similar solution to Apache's filteredIterable() with the Iterables.filter() method. Let's use it to filter the list and return only the elements matching our search string:

public List<String> findUsingGuava(String search, List<String> list) {         
    Iterable<String> result = Iterables.filter(list, Predicates.containsPattern(search));

    return Lists.newArrayList(result.iterator());
}

4. Conclusion

In this tutorial, we’ve learned different ways of searching for a String in an ArrayList. We first started with a simple for loop and then proceeded with an approach using the Stream API. Finally, we saw some examples using two third-party libraries — Google Guava and Commons Collections_._

The complete examples are available over on GitHub.

java string arrays

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

How to Install OpenJDK 11 on CentOS 8

What is OpenJDK? OpenJDk or Open Java Development Kit is a free, open-source framework of the Java Platform, Standard Edition (or Java SE).

How to convert an Array to String in Java?

In this post, you'll learn the various methods to convert an Array to String in Java

Java String Programs For Beginners | Java String Examples | Java Training

Java String Programs will talk about top 10 important programs in java strings with examples.

Java String length() | How To Find String Length In Java

Java String length(). Java provides a in-built java.lang.String.length() method. Length of a String is essentially the number of 16-bit Unicode characters.

Java String – String Functions In Java With Examples

In this post, we will be discussing about a new concept, Java String. String is a sequence of characters. But in Java, a string is an object that represents a sequence of characters. The java.lang.String class is used to create string object.