如何在Java中删除特定的List对象?

Sha*_*shB 7 java list

我有一份大约100,000名Java员工的名单.现在我想快速从列表中删除特定的员工对象.没有迭代整个列表,有什么可能的方法呢?(如果我迭代每个对象,比较细节然后删除:这个场景需要很多时间)

Pet*_*rey 7

您需要一种快速找到对象的方法.你可以

  • 将一个ArrayList排序,然后使用Collections.binarySearch执行二进制搜索O(log N)注意:实际上从ArrayList中删除一个元素O(n)就像LinkedList一样O(1)删除,对它进行二进制搜索将是没有意义的,即比O(N)
  • 您可以使用哈希集合代理,并且将O(1)分拆除去.LinkedHashSet如果您想保留一些订单,例如插入顺序,您可以使用a .
  • 你可以让对象变成可变的并且有一个enabled你设置的字段false而不是实际删除它.您可以稍后将其删除为批处理作业(一夜之间或周末)