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]