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]