Java 基于Integerlist筛选对象列表
我有一门课Java 基于Integerlist筛选对象列表,java,java-8,java-stream,Java,Java 8,Java Stream,我有一门课 class Employee String id String name 我想根据deptId列表筛选出员工列表,deptId列表是一个整数列表 Employee emp1 = new Employee("1","Ally"); Employee emp2 = new Employee("2","Billy"); ArrayList<Employee> employeeList =
class Employee
String id
String name
我想根据deptId列表筛选出员工列表,deptId列表是一个整数列表
Employee emp1 = new Employee("1","Ally");
Employee emp2 = new Employee("2","Billy");
ArrayList<Employee> employeeList = Arrays.asList(emp1,emp2);
ArrayList<Integer> ids = Arrays.asList(2);
emp1=新员工(“1”、“联盟”);
员工emp2=新员工(“2”,“比利”);
ArrayList employeeList=Arrays.asList(emp1,emp2);
ArrayList ID=Arrays.asList(2);
我写的是
List<Employee> filteredList = employeeList.stream()
.filter(employee -> ids.contains(employee.getId()))
.collect(Collectors.toList());
List filteredList=employeeList.stream()
.filter(employee->id.contains(employee.getId()))
.collect(Collectors.toList());
但是作为一个输出,我得到一个空数组。首先,您需要将
subscription
更改为employee
将您的ID列表更改为字符串列表
并相应填充,或者执行以下操作:
List<Employee> filteredList;
filteredList = employeeList.stream()
.filter(employee -> ids.contains(Integer.parseInt(employee.getId())))
.collect(Collectors.toList());
列表过滤器列表;
filteredList=employeeList.stream()
.filter(employee->ids.contains(Integer.parseInt(employee.getId()))
.collect(Collectors.toList());
其他选项包括将
Employee
类更改为使用int
作为id。这是因为您的员工id是字符串而不是int
。此外,我建议将id
列表转换为集合。广泛使用的Set
接口的HashSet
实现具有更好的查找时间复杂性(O(1)而不是O(n))。Integer.toString(employee.getId())
或String.valueOf(employee.getId())
?太好了,谢谢!我一定还在睡觉,因为我刚刚意识到过滤器中的lambda不正确<代码>订阅
应为员工