Collezioni Commons - Filtraggio di oggetti

La classe CollectionUtils della libreria Apache Commons Collections fornisce vari metodi di utilità per operazioni comuni che coprono un'ampia gamma di casi d'uso. Aiuta a evitare di scrivere codice boilerplate. Questa libreria è molto utile prima di jdk 8 poiché funzionalità simili sono ora fornite nell'API Stream di Java 8.

metodo filter ()

Il metodo filter () di CollectionUtils può essere utilizzato per filtrare una lista per rimuovere oggetti che non soddisfano la condizione fornita dal predicato passato.

Dichiarazione

Di seguito è riportata la dichiarazione per

org.apache.commons.collections4.CollectionUtils.filter() metodo -

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

Parametri

  • collection - La raccolta da cui ottenere l'input potrebbe non essere nulla.

  • predicate - Il predicato da utilizzare come filtro può essere nullo.

Valore di ritorno

Vero se la raccolta viene modificata da questa chiamata, false in caso contrario.

Esempio

L'esempio seguente mostra l'utilizzo di org.apache.commons.collections4.CollectionUtils.filter()metodo. Filtreremo un elenco di numeri interi per ottenere solo numeri pari.

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

Produzione

Produrrà il seguente risultato:

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

metodo filterInverse ()

Il metodo filterInverse () di CollectionUtils può essere utilizzato per filtrare un elenco per rimuovere gli oggetti, che soddisfano la condizione fornita dal predicato passato.

Dichiarazione

Di seguito è riportata la dichiarazione per

org.apache.commons.collections4.CollectionUtils.filterInverse() metodo -

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

Parametri

  • collection - La raccolta da cui ottenere l'input potrebbe non essere nulla.

  • predicate - Il predicato da utilizzare come filtro può essere nullo.

Valore di ritorno

Vero se la raccolta viene modificata da questa chiamata, false in caso contrario.

Esempio

L'esempio seguente mostra l'utilizzo di org.apache.commons.collections4.CollectionUtils.filterInverse()metodo. Filtreremo un elenco di numeri interi per ottenere solo numeri dispari.

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

Produzione

Il risultato è come indicato di seguito:

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