Commons Collections - 过滤对象


Apache Commons Collections 库的 CollectionUtils 类为涵盖广泛用例的常见操作提供了各种实用方法。它有助于避免编写样板代码。该库在 jdk 8 之前非常有用,因为 Java 8 的 Stream API 现在提供了类似的功能。

过滤器()方法

CollectionUtils 的 filter() 方法可用于过滤列表以删除不满足所传递谓词提供的条件的对象。

宣言

以下是声明

org.apache.commons.collections4.CollectionUtils.filter()方法 -

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

参数

  • 集合- 从中​​获取输入的集合不能为空。

  • predicate - 用作过滤器的谓词可以为空。

返回值

如果此调用修改了集合,则为 true,否则为 false。

例子

以下示例显示了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() 方法

CollectionUtils 的 filterInverse() 方法可用于过滤列表以删除满足所传递谓词提供的条件的对象。

宣言

以下是声明

org.apache.commons.collections4.CollectionUtils.filterInverse()方法 -

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

参数

  • 集合- 从中​​获取输入的集合不能为空。

  • predicate - 用作过滤器的谓词可以为空。

返回值

如果此调用修改了集合,则为 true,否则为 false。

例子

以下示例显示了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]