📅  最后修改于: 2020-11-18 08:24:04             🧑  作者: Mango
Apache Commons Collections库的CollectionUtils类为涵盖大量用例的常见操作提供了各种实用程序方法。它有助于避免编写样板代码。该库在jdk 8之前非常有用,因为Java 8的Stream API现在提供了类似的功能。
CollectionUtils的filter()方法可用于过滤列表,以删除不满足通过谓词传递的条件的对象。
以下是的声明
org.apache.commons.collections4.CollectionUtils.filter()方法-
public static boolean filter(Iterable collection,
Predicate super T> predicate)
collection-从中获取输入的collection,不能为null。
谓词-用作过滤器的谓词可以为null。
如果通过此调用修改了集合,则为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 integerList = new ArrayList();
integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));
System.out.println("Original List: " + integerList);
CollectionUtils.filter(integerList, new Predicate() {
@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]
CollectionUtils的filterInverse()方法可用于过滤列表以删除满足通过谓词传递的条件的对象。
以下是的声明
org.apache.commons.collections4.CollectionUtils.filterInverse()方法-
public static boolean filterInverse(
Iterable collection, Predicate super T> predicate)
collection-从中获取输入的collection,不能为null。
谓词-用作过滤器的谓词可以为null。
如果通过此调用修改了集合,则为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 integerList = new ArrayList();
integerList.addAll(Arrays.asList(1,2,3,4,5,6,7,8));
System.out.println("Original List: " + integerList);
CollectionUtils.filterInverse(integerList, new Predicate() {
@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]