首页 > 解决方案 > 如何从对象列表中删除几个对象

问题描述

假设我有一个 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()的区别

提前致谢。

标签: jakarta-eecollectionsiterator

解决方案


一次加载数百万个对象并不好。您如何获得所有这些记录?如果您从数据库中读取它们,最好使用 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 行列表分开处理。


推荐阅读