jakarta-ee - 如何从对象列表中删除几个对象
问题描述
假设我有一个 Employee 对象列表,并且每个 Employee 类都有诸如 employeeName、employeeAddress、salary 等属性。现在我必须删除名称为“John”且 Salary > 40000 的 Employee 对象。
列表 empList = new ArrayList<>(); // 将数百万员工添加到 empList。
根据我的理解,要删除具有上述条件的员工,我应该使用以下代码:
Iterator<Employee> iterator = list.iterator();
while (iterator.hasNext()) {
Employee employee = iterator.next();
if ("John".equals(employee.getName) && employee.getSalary>40000) {
iterator .remove();
}
}
所以基本上上面的代码将从列表中删除所需的 Employee 对象。请让我知道我的理解是否正确。
除此之外,请澄清以下内容: 1. 当我们拥有数百万条记录时,我们将如何解决这个问题。2.iterator.remove()和list.remove()的区别
提前致谢。
解决方案
一次加载数百万个对象并不好。您如何获得所有这些记录?如果您从数据库中读取它们,最好使用 SQL 进行过滤。
where e.name = "John" and e.salary > 40000
如果你从一个文件中读取它们,你不应该一次读取它们,那也适用于数据库。您可以批量获取记录,比如说 1000。
如果你像上面那样实现它,你也可以使用流:
List<Employee> filteredList = list.stream()
.filter(employee -> employee.getName().equals("John"))
.filter(employee.getSlaray() > 40000)
.collect(Collectors.toList());
然后您可以将过滤后的 1000 行列表分开处理。
推荐阅读
- c++ - 比较 C++ 中的双精度,同行评审
- php - 未捕获的错误:在使用 __callStatic 时不在对象上下文中使用 $this
- java - Java 升级 8 到 11 导致 LDAPS 连接出现问题(连接或出站已关闭)
- spring-boot - Spring Boot 2.1.1 中缺少 AspectJ 依赖项
- rcpp - 从同一 cpp 文件中的函数调用 Rcpp 函数
- react-native - 使用 swiper 在 react-native 中渲染配置文件
- javascript - 为什么我的网络摄像头一直显示错误
- java - 使用 Spring Security 和 AngularJS 预防 CSRF
- r - 从数据表的子集创建 igraph 失败
- java - 如何使用spring集成从sftp服务器下载文件而不使用spring boot