Predicate<? super T> predicate能举个例子吗
时间: 2023-04-11 16:01:43 浏览: 55
当然可以,Predicate<? super T> predicate是一个泛型接口,用于判断某个对象是否符合特定的条件。例如,我们可以定义一个Predicate接口的实现类,用于判断一个整数是否是偶数:
```
public class EvenNumberPredicate implements Predicate<Integer> {
@Override
public boolean test(Integer number) {
return number % 2 == 0;
}
}
```
这个实现类中,我们重写了Predicate接口中的test方法,用于判断一个整数是否是偶数。如果是偶数,返回true,否则返回false。
相关问题
Predicate<? super T> predicate怎么用,举个例子可以吗
当我们使用 Predicate<? super T> predicate 时,我们可以使用它来过滤集合中的元素。下面是一个例子:
假设我们有一个 Animal 类,它有一个属性 age,我们想要从一个 Animal 集合中过滤出年龄大于等于 5 的 Animal 对象,可以这样写:
List<Animal> animals = new ArrayList<>();
animals.add(new Animal("cat", 3));
animals.add(new Animal("dog", 6));
animals.add(new Animal("lion", 8));
Predicate<Animal> agePredicate = animal -> animal.getAge() >= 5;
List<Animal> filteredAnimals = animals.stream()
.filter(agePredicate)
.collect(Collectors.toList());
在这个例子中,我们使用了 Predicate<Animal> 来过滤 Animal 集合中的元素,其中 agePredicate 是一个 Lambda 表达式,它接受一个 Animal 对象并返回一个 boolean 值,表示这个 Animal 对象是否符合我们的过滤条件。
最后,我们使用了 Java 8 中的 Stream API 来对 Animal 集合进行过滤,并将过滤后的结果收集到一个新的 List 中。
java collection removeIf 怎么用?
Java中的Collection接口提供了一个removeIf(Predicate<? super E> filter)方法,用于根据指定条件删除集合中的元素。其中,Predicate是一个函数式接口,用于封装一个判断条件。
使用方法如下:
1. 定义一个Predicate对象,实现该对象的test方法,用于判断集合中的元素是否需要被删除。
2. 调用集合的removeIf方法,将Predicate对象作为参数传入,即可按照指定条件删除集合中的元素。
举例说明:
```
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
// 删除集合中所有的偶数
list.removeIf(x -> x % 2 == 0);
// 输出集合中的元素
System.out.println(list); // [1, 3, 5]
```
在上面的例子中,首先定义了一个Predicate对象,用于判断集合中的元素是否为偶数;然后调用集合的removeIf方法,将Predicate对象作为参数传入,即可删除集合中所有的偶数。最后输出集合中的元素,可以看到只剩下了奇数。