Commons Collections 简明教程
Commons Collections - Filtering Objects
Apache Commons Collections 库的 CollectionUtils 类提供各种实用方法,用于涵盖广泛使用场景的常见操作。它有助于避免编写样板代码。在 jdk 8 之前,该库非常有用,因为 Java 8 的 Stream API 中现在提供了类似的功能。
filter() method
可使用 CollectionUtils 的 filter() 方法,过滤列表以删除不满足由传递的谓词提供的条件的对象。
Declaration
以下是声明:
org.apache.commons.collections4.CollectionUtils.filter() 方法 −
public static <T> boolean filter(Iterable<T> collection,
Predicate<? super T> predicate)
Example
以下示例显示 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);
}
}
filterInverse() method
可使用 CollectionUtils 的 filterInverse() 方法,过滤列表以删除满足由传递的谓词提供的条件的对象。
Declaration
以下是声明:
org.apache.commons.collections4.CollectionUtils.filterInverse() 方法 −
public static <T> boolean filterInverse(Iterable<T> collection, Predicate<? super T> predicate)
Example
以下示例显示 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);
}
}