当前位置: 首页 > 知识库问答 >
问题:

如何从对象列表中删除几个对象

唐照
2023-03-14

假设我有一个雇员对象列表,每个雇员类都有雇员姓名、雇员地址、工资等属性。现在我必须删除名称为“John”和Salary的雇员对象

列表empList=new ArrayList

根据我的理解,若要解雇具有上述情况的员工,我应使用以下代码:

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()之间的区别

提前谢谢。

共有2个答案

那安宁
2023-03-14

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

彭鹭洋
2023-03-14

1)如果你想让对象保持活动状态,你只能过滤需要的对象

list.stream()
.filter(emp->"John".equals(emp.getName()) && emp.getSlaray() >40000)
.collect(Collectors.toList());

2)如果您正在迭代集合并使用:

Collection.remove()

特别提出ConcurrentModificationException,原因是更改以前用于构造完成循环所需的显式调用序列的对象的状态,但在使用

Iterator.remove()

您可以更改基础集合,并重新评估完成循环所需的显式调用序列。

 类似资料:
  • 问题内容: 如果我需要从List中删除一个对象(假设字符串“ abc” linkedList或ArrayList),则可以删除哪一个?(我认为两者都是相同的) ,如果我使用Linkedlist和arraylist,那么时间和空间的复杂度是多少 (我相信两者的时间复杂度都为O(n)相同) 问题答案: 两者都具有相同的时间复杂度-O(n),但是恕我直言,该版本会更快,尤其是在大型列表中,因为当您从数组

  • 我有两个对象列表,它们在两个列表中都有重复名称。我需要从清单2中删除清单1中的所有重复值。 下面是一个场景,类有名称变量,用这个变量需要检查清单1中的重复值并需要删除。 //这是具有3个对象的第一个列表 清单1大小为1 请建议我在Java8与流。

  • 我有两个数据成员SupID和SupplierName以及一个构造函数的类Supplier,然后我在Form1 load()时将这些对象添加到Supplier列表中。 然后我想在单击发送按钮时通过其新的即时构造函数将lst发送到Form2: 下一步在表格2中,代码如下: 然后我想从bs中删除对象: 问题是,当我从Form2中的bs中删除对象时,Form1中lst中的对象也会受到影响。那么如果我不希望

  • 问题内容: 我有一个从mysql数据库附加的对象列表,并包含空格。我希望删除下面的空格,但是im使用的代码不起作用? 问题答案: Python中的字符串是不可变的(这意味着它们的数据无法修改),因此replace方法不会修改字符串-它返回一个新字符串。您可以按以下方式修复代码: 但是,实现目标的更好方法是使用列表理解。例如,以下代码使用以下命令从列表中的每个字符串中删除前导和尾随空格:

  • 问题内容: 我将列表添加到sessionStorage像: 及其工作正常,现在我想通过productId从此列表中删除单个对象。 问题答案: 请参阅以下文章:http : //www.nczonline.net/blog/2009/07/21/introduction-to- sessionstorage/ 如果要从会话存储中删除指定键/值对,则需要如下所示: 对于您的情况: 此外,适当的实现允许

  • 问题内容: 我的代码有一个问题,我做了一个示例程序来显示链接列表中的emp详细信息,现在当我尝试删除特定条目时出现问题意味着它无法正常工作,希望我在代码中犯了一些错误你能建议怎么做吗? 问题答案: 您无法在列表(添加,删除…项目)上进行迭代操作。您必须使用迭代器 参见http://docs.oracle.com/javase/6/docs/api/java/util/Iterator.html