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]