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]