Collections communes - Filtrage d'objets
La classe CollectionUtils de la bibliothèque Apache Commons Collections fournit diverses méthodes utilitaires pour les opérations courantes couvrant un large éventail de cas d'utilisation. Cela permet d'éviter d'écrire du code standard. Cette bibliothèque est très utile avant jdk 8 car des fonctionnalités similaires sont désormais fournies dans l'API Stream de Java 8.
filter () méthode
filter () de CollectionUtils peut être utilisée pour filtrer une liste afin de supprimer les objets qui ne satisfont pas à la condition fournie par le prédicat passé.
Déclaration
Voici la déclaration pour
org.apache.commons.collections4.CollectionUtils.filter() méthode -
public static <T> boolean filter(Iterable<T> collection,
Predicate<? super T> predicate)
Paramètres
collection - La collection à partir de laquelle obtenir l'entrée peut ne pas être nulle.
predicate - Le prédicat à utiliser comme filtre peut être nul.
Valeur de retour
True si la collection est modifiée par cet appel, false dans le cas contraire.
Exemple
L'exemple suivant montre l'utilisation de org.apache.commons.collections4.CollectionUtils.filter()méthode. Nous filtrerons une liste d'entiers pour obtenir uniquement des nombres pairs.
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);
}
}
Production
Il produira le résultat suivant -
Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Even numbers): [2, 4, 6, 8]
filterInverse (), méthode
La méthode filterInverse () de CollectionUtils peut être utilisée pour filtrer une liste afin de supprimer des objets, qui satisfont la condition fournie par le prédicat passé.
Déclaration
Voici la déclaration pour
org.apache.commons.collections4.CollectionUtils.filterInverse() méthode -
public static <T> boolean filterInverse(
Iterable<T> collection, Predicate<? super T> predicate)
Paramètres
collection - La collection à partir de laquelle obtenir l'entrée peut ne pas être nulle.
predicate - Le prédicat à utiliser comme filtre peut être nul.
Valeur de retour
True si la collection est modifiée par cet appel, false dans le cas contraire.
Exemple
L'exemple suivant montre l'utilisation de org.apache.commons.collections4.CollectionUtils.filterInverse()méthode. Nous filtrerons une liste d'entiers pour obtenir uniquement des nombres impairs.
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);
}
}
Production
Le résultat est comme indiqué ci-dessous -
Original List: [1, 2, 3, 4, 5, 6, 7, 8]
Filtered List (Odd numbers): [1, 3, 5, 7]