Coleções Commons - Filtrando Objetos

A classe CollectionUtils da biblioteca de coleções do Apache Commons fornece vários métodos utilitários para operações comuns que abrangem uma ampla variedade de casos de uso. Isso ajuda a evitar escrever código clichê. Essa biblioteca é muito útil antes do jdk 8, pois funcionalidades semelhantes agora são fornecidas na API de fluxo do Java 8.

método filter ()

O método filter () de CollectionUtils pode ser usado para filtrar uma lista para remover objetos que não satisfaçam a condição fornecida pelo predicado passado.

Declaração

A seguir está a declaração para

org.apache.commons.collections4.CollectionUtils.filter() método -

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

Parâmetros

  • collection - A coleção da qual obter a entrada não pode ser nula.

  • predicate - O predicado a ser usado como filtro pode ser nulo.

Valor de retorno

Verdadeiro se a coleção for modificada por esta chamada, falso caso contrário.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.filter()método. Filtraremos uma lista de inteiros para obter apenas números pares.

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);
   }
}

Resultado

Isso produzirá o seguinte resultado -

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

método filterInverse ()

O método filterInverse () de CollectionUtils pode ser usado para filtrar uma lista para remover objetos, que satisfazem a condição fornecida pelo predicado passado.

Declaração

A seguir está a declaração para

org.apache.commons.collections4.CollectionUtils.filterInverse() método -

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

Parâmetros

  • collection - A coleção da qual obter a entrada não pode ser nula.

  • predicate - O predicado a ser usado como filtro pode ser nulo.

Valor de retorno

Verdadeiro se a coleção for modificada por esta chamada, falso caso contrário.

Exemplo

O exemplo a seguir mostra o uso de org.apache.commons.collections4.CollectionUtils.filterInverse()método. Filtraremos uma lista de inteiros para obter apenas números ímpares.

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);
   }
}

Resultado

O resultado é o indicado abaixo -

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