Commons Collections - การกรองวัตถุ

คลาส CollectionUtils ของไลบรารี Apache Commons Collections มีวิธียูทิลิตี้ต่างๆสำหรับการดำเนินการทั่วไปซึ่งครอบคลุมกรณีการใช้งานที่หลากหลาย ช่วยหลีกเลี่ยงการเขียนโค้ดสำเร็จรูป ไลบรารีนี้มีประโยชน์มากก่อนหน้า jdk 8 เนื่องจากฟังก์ชันที่คล้ายกันมีให้ใน Stream API ของ Java 8 แล้ว

วิธีการกรอง ()

filter () วิธีการ CollectionUtils สามารถใช้เพื่อกรองรายการเพื่อลบอ็อบเจ็กต์ที่ไม่ตรงตามเงื่อนไขที่เพรดิเคตส่งผ่าน

คำประกาศ

ต่อไปนี้เป็นคำประกาศสำหรับ

org.apache.commons.collections4.CollectionUtils.filter() วิธีการ -

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

พารามิเตอร์

  • collection - คอลเลกชันที่จะได้รับข้อมูลจากอาจไม่เป็นค่าว่าง

  • predicate - เพรดิเคตที่จะใช้เป็นตัวกรองอาจเป็นโมฆะ

ส่งคืนค่า

True หากคอลเลกชันถูกแก้ไขโดยการเรียกนี้มิฉะนั้นจะเป็นเท็จ

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.filter()วิธี. เราจะกรองรายการจำนวนเต็มเพื่อให้ได้เลขคู่เท่านั้น

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

เอาต์พุต

มันจะให้ผลลัพธ์ดังต่อไปนี้ -

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

filterInverse () วิธีการ

filterInverse () เมธอด CollectionUtils สามารถใช้เพื่อกรองรายการเพื่อลบอ็อบเจ็กต์ซึ่งเป็นไปตามเงื่อนไขที่กำหนดโดยเพรดิเคตที่ส่งผ่าน

คำประกาศ

ต่อไปนี้เป็นคำประกาศสำหรับ

org.apache.commons.collections4.CollectionUtils.filterInverse() วิธีการ -

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

พารามิเตอร์

  • collection - คอลเลกชันที่จะได้รับข้อมูลจากอาจไม่เป็นค่าว่าง

  • predicate - เพรดิเคตที่จะใช้เป็นตัวกรองอาจเป็นโมฆะ

ส่งคืนค่า

True หากคอลเลกชันถูกแก้ไขโดยการเรียกนี้มิฉะนั้นจะเป็นเท็จ

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงการใช้งาน org.apache.commons.collections4.CollectionUtils.filterInverse()วิธี. เราจะกรองรายการจำนวนเต็มเพื่อให้ได้จำนวนคี่เท่านั้น

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

เอาต์พุต

ผลลัพธ์เป็นไปตามที่ระบุไว้ด้านล่าง -

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