赞
踩
在Java中,如果你想要从一个对象集合中过滤出那些具有某个属性值在预定义数组内的元素,你可以使用Java 8的Stream API结合filter
方法来完成这一需求。下面是一个示例,基于之前的Person
类和一个状态数组,展示如何过滤出状态在指定数组内的所有人员。
import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Person> people = Arrays.asList( new Person("Alice", "active"), new Person("Bob", "inactive"), new Person("Charlie", "pending"), new Person("David", "active") ); String[] statusesToFilter = {"active", "pending"}; List<Person> filteredPeople = people.stream() .filter(person -> Arrays.asList(statusesToFilter).contains(person.getStatus())) .collect(Collectors.toList()); System.out.println("过滤后的人员列表:"); filteredPeople.forEach(person -> System.out.println(person.getName() + " - " + person.getStatus())); } } class Person { private String name; private String status; public Person(String name, String status) { this.name = name; this.status = status; } public String getStatus() { return status; } public String getName() { return name; } }
在这个例子中,我们使用filter
方法对people
集合进行过滤。Lambda表达式person -> Arrays.asList(statusesToFilter).contains(person.getStatus())
用于检查每个Person
对象的status
属性是否包含在statusesToFilter
数组所转换的列表中。如果包含,则保留该对象。最后,使用collect(Collectors.toList())
将过滤后的流转换回List<Person>
。
运行这段代码,你将得到一个只包含状态为"active"和"pending"的人员的新列表。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。