Рубрики
Без рубрики

Поиск строки в массивеList

Узнайте, как искать строку в arrayList

Автор оригинала: Caroline Sciberras.

1. Обзор

В этом учебнике, мы будем смотреть на различные способы поиска Струнные в ArrayList . Наша цель состоит в том, чтобы проверить, присутствует ли определенная непустая последовательность символов в любом из элементов в ArrayList и вернуть список со всеми соответствующими элементами.

2. Основные петли

Во-первых, давайте использовать базовый цикл для поиска последовательности символов в данной строке поиска с помощью содержит метод Java Струнные класс:

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

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

    return matches;
}

3. Потоки

тем Java 8 Потоки API предоставляет нам более компактное решение с помощью функциональных операций.

Во-первых, мы будем использовать фильтр () метод поиска нашего списка входов для строки поиска, а затем, мы будем использовать собирать метод создания и заполнения списка, содержащего соответствующие элементы:

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

    return matchingElements;
}

4. Библиотеки третьих сторон

Если мы не можем использовать API Java 8 Stream, мы можем посмотреть на сторонние библиотеки, такие как Commons Collections и Google Guava.

Чтобы использовать их, нам просто нужно добавить Гуава , Общие коллекции , или обе зависимости в нашем .xml пом:


    com.google.guava
    guava
    23.0



    org.apache.commons
    commons-collections4
    4.1

4.1. Коллекции Викисклада

Commons Collections предоставляет нам метод IterableUtils.filteredIterable () который соответствует данному Итерируемые против Предикат .

Давай позвоним IterableUtils.filteredIterable () , определяя предикат, чтобы выбрать только те элементы, содержащие строку поиска. Тогда мы будем использовать ИтераторУтилс.toList () для преобразования Итерируемые к Список :

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

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

4.2. Гуава, Гуава

Google Guava предлагает аналогичное решение для фильтруется () с Итерируемые.фильтр () метод. Давайте использовать его для фильтрации списка и вернуть только элементы, соответствующие нашей строке поиска:

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

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

5. Заключение

В этом учебнике мы изучили различные способы поиска Струнные в ArrayList. Мы начали с простого для цикл, а затем приступил к подходу с использованием API потока. Наконец, мы видели несколько примеров использования двух сторонних библиотек – Google Guava и Commons Collections .

Полные примеры доступны для более на GitHub .