Коллекции Commons - объекты фильтрации

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

filter () метод

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

Декларация

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

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

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

Параметры

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

  • predicate - Предикат для использования в качестве фильтра может иметь значение NULL.

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

Истина, если коллекция изменена этим вызовом, в противном случае - ложь.

пример

В следующем примере показано использование 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 - Коллекция, из которой требуется получить входные данные, не может быть нулевым.

  • predicate - Предикат для использования в качестве фильтра может иметь значение NULL.

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

Истина, если коллекция изменена этим вызовом, в противном случае - ложь.

пример

В следующем примере показано использование 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);
   }
}

Вывод

Результат, как указано ниже -

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