Colecciones comunes: filtrado de objetos

La clase CollectionUtils de la biblioteca Apache Commons Collections proporciona varios métodos de utilidad para operaciones comunes que cubren una amplia gama de casos de uso. Ayuda a evitar escribir código repetitivo. Esta biblioteca es muy útil antes de jdk 8, ya que ahora se proporcionan funcionalidades similares en la API Stream de Java 8.

método filter ()

El método filter () de CollectionUtils se puede usar para filtrar una lista para eliminar objetos que no satisfacen la condición proporcionada por el predicado pasado.

Declaración

A continuación se muestra la declaración de

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

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

Parámetros

  • collection - La colección de la que se obtendrá la entrada no puede ser nula.

  • predicate - El predicado a utilizar como filtro, puede ser nulo.

Valor devuelto

Verdadero si la colección es modificada por esta llamada, falso en caso contrario.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.filter()método. Filtraremos una lista de enteros para obtener solo 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);
   }
}

Salida

Producirá el siguiente resultado:

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

método filterInverse ()

El método filterInverse () de CollectionUtils se puede usar para filtrar una lista para eliminar objetos, que satisfacen la condición proporcionada por el predicado pasado.

Declaración

A continuación se muestra la declaración de

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

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

Parámetros

  • collection - La colección de la que se obtendrá la entrada no puede ser nula.

  • predicate - El predicado a utilizar como filtro, puede ser nulo.

Valor devuelto

Verdadero si la colección es modificada por esta llamada, falso en caso contrario.

Ejemplo

El siguiente ejemplo muestra el uso de org.apache.commons.collections4.CollectionUtils.filterInverse()método. Filtraremos una lista de enteros para obtener solo números impares.

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

Salida

El resultado es el que se indica a continuación:

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