Commons Koleksiyonları - Nesneleri Filtreleme

Apache Commons Collections kitaplığının CollectionUtils sınıfı, çok çeşitli kullanım durumlarını kapsayan yaygın işlemler için çeşitli yardımcı yöntemler sağlar. Standart kod yazmaktan kaçınmaya yardımcı olur. Bu kütüphane jdk 8'den önce çok kullanışlıdır, çünkü benzer işlevler artık Java 8'in Stream API'sinde sağlanmaktadır.

filter () yöntemi

CollectionUtils'in filter () yöntemi, geçirilen koşul tarafından sağlanan koşulu karşılamayan nesneleri kaldırmak için bir listeyi filtrelemek için kullanılabilir.

Beyanname

Aşağıdaki beyanı

org.apache.commons.collections4.CollectionUtils.filter() yöntem -

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

Parametreler

  • collection - Girişin alınacağı koleksiyon boş olmayabilir.

  • predicate - Süzgeç olarak kullanılacak yüklem boş olabilir.

Geri dönüş değeri

Koleksiyon bu çağrı ile değiştirilirse true, aksi takdirde false.

Misal

Aşağıdaki örnek, org.apache.commons.collections4.CollectionUtils.filter()yöntem. Yalnızca çift sayıları elde etmek için bir tamsayı listesini filtreleyeceğiz.

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

Çıktı

Aşağıdaki sonucu verecektir -

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

filterInverse () yöntemi

CollectionUtils'in filterInverse () yöntemi, geçirilen yüklem tarafından sağlanan koşulu sağlayan nesneleri kaldırmak için bir listeyi filtrelemek için kullanılabilir.

Beyanname

Aşağıdaki beyanı

org.apache.commons.collections4.CollectionUtils.filterInverse() yöntem -

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

Parametreler

  • collection - Girişin alınacağı koleksiyon boş olmayabilir.

  • predicate - Süzgeç olarak kullanılacak yüklem boş olabilir.

Geri dönüş değeri

Koleksiyon bu çağrı ile değiştirilirse true, aksi takdirde false.

Misal

Aşağıdaki örnek, org.apache.commons.collections4.CollectionUtils.filterInverse()yöntem. Yalnızca tek sayıları elde etmek için bir tamsayı listesini filtreleyeceğiz.

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

Çıktı

Sonuç aşağıda belirtildiği gibidir -

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