Kolekcje Commons - filtrowanie obiektów

Klasa CollectionUtils z biblioteki Apache Commons Collections udostępnia różne metody narzędziowe do typowych operacji obejmujących szeroki zakres przypadków użycia. Pomaga to uniknąć pisania kodu standardowego. Ta biblioteka jest bardzo przydatna przed jdk 8, ponieważ podobne funkcje są teraz dostępne w Stream API Java 8.

filter () metoda

filter () metody CollectionUtils może służyć do filtrowania listy w celu usunięcia obiektów, które nie spełniają warunku dostarczonego przez przekazany predykat.

Deklaracja

Poniżej znajduje się deklaracja dla

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

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

Parametry

  • collection - Kolekcja, z której mają zostać pobrane dane wejściowe, nie może mieć wartości NULL.

  • predicate - Predykat używany jako filtr może być pusty.

Wartość zwracana

Prawda, jeśli kolekcja jest modyfikowana przez to wywołanie, fałsz w przeciwnym razie.

Przykład

Poniższy przykład pokazuje użycie org.apache.commons.collections4.CollectionUtils.filter()metoda. Przefiltrujemy listę liczb całkowitych, aby uzyskać tylko liczby parzyste.

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

Wynik

To da następujący wynik -

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

filterInverse (), metoda

filterInverse () metody CollectionUtils może służyć do filtrowania listy w celu usunięcia obiektów, które spełniają warunek dostarczony przez przekazany predykat.

Deklaracja

Poniżej znajduje się deklaracja dla

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

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

Parametry

  • collection - Kolekcja, z której mają zostać pobrane dane wejściowe, nie może mieć wartości NULL.

  • predicate - Predykat używany jako filtr może być pusty.

Wartość zwracana

Prawda, jeśli kolekcja jest modyfikowana przez to wywołanie, fałsz w przeciwnym razie.

Przykład

Poniższy przykład pokazuje użycie org.apache.commons.collections4.CollectionUtils.filterInverse()metoda. Przefiltrujemy listę liczb całkowitych, aby uzyskać tylko liczby nieparzyste.

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

Wynik

Wynik jest taki, jak podano poniżej -

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