Учебники

Коллекции Commons — Фильтрация объектов

Класс CollectionUtils библиотеки Apache Commons Collections предоставляет различные вспомогательные методы для общих операций, охватывающих широкий спектр вариантов использования. Это помогает избежать написания стандартного кода. Эта библиотека очень полезна до jdk 8, так как аналогичные функции теперь доступны в Stream API Java 8.

Фильтрация списка с использованием метода filter ()

Метод filter () класса CollectionUtils можно использовать для фильтрации списка, чтобы удалить объекты, которые не удовлетворяют условию, предоставляемому переданным предикатом.

декларация

Ниже приводится декларация для

org.apache.commons.collections4.CollectionUtils.filter () метод —

public static <T> boolean filter(Iterable<T> collection,
   Predicate<? super T> predicate)

параметры

  • collection — Коллекция, из которой можно получить входные данные, не может быть нулевой.

  • Предикат — Предикат, который будет использоваться в качестве фильтра, может быть нулевым.

collection — Коллекция, из которой можно получить входные данные, не может быть нулевой.

Предикат — Предикат, который будет использоваться в качестве фильтра, может быть нулевым.

Возвращаемое значение

True, если коллекция изменена этим вызовом, в противном случае — false.

пример

В следующем примере показано использование метода org.apache.commons.collections4.CollectionUtils.filter (). Мы отфильтруем список целых чисел, чтобы получить только четные числа.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;

public class CollectionUtilsTester {
   public static void main(String[] args) {

      List<Integer> integerList = new ArrayList<Integer>();
      integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));

      System.out.println("Original List: " + integerList);
      CollectionUtils.filter(integerList, new Predicate<Integer>() {
         
         @Override
         public boolean evaluate(Integer input) {
            if(input.intValue() % 2 == 0) {
               return true;
            }
            return false;
         }
      });
      
      System.out.println("Filtered List (Even numbers): " + integerList);
   }
}

Выход

Будет напечатан следующий результат.

Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Even numbers): [2, 4, 6, 8]

Фильтрация списка с использованием метода filterInverse ()

Метод filterInverse () класса CollectionUtils можно использовать для фильтрации списка, чтобы удалить объекты, которые удовлетворяют условию, предоставляемому переданным предикатом.

декларация

Ниже приводится объявление для метода org.apache.commons.collections4.CollectionUtils.filterInverse ()

public static <T> boolean filterInverse(Iterable<T> collection,
   Predicate<? super T> predicate)

параметры

  • collection — Коллекция, из которой можно получить входные данные, не может быть нулевой.

  • Предикат — Предикат, который будет использоваться в качестве фильтра, может быть нулевым.

collection — Коллекция, из которой можно получить входные данные, не может быть нулевой.

Предикат — Предикат, который будет использоваться в качестве фильтра, может быть нулевым.

Возвращаемое значение

True, если коллекция изменена этим вызовом, в противном случае — false.

пример

В следующем примере показано использование метода org.apache.commons.collections4.CollectionUtils.filterInverse (). Мы отфильтруем список целых чисел, чтобы получить только нечетные числа.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;

public class CollectionUtilsTester {
   public static void main(String[] args) {

      List<Integer> integerList = new ArrayList<Integer>();
      integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));

      System.out.println("Original List: " + integerList);
      CollectionUtils.filterInverse(integerList, new Predicate<Integer>() {
         
         @Override
         public boolean evaluate(Integer input) {
            if(input.intValue() % 2 == 0) {
               return true;
            }
            return false;
         }
      });
      
      System.out.println("Filtered List (Odd numbers): " + integerList);
   }
}

Выход

Будет напечатан следующий результат.