我有一个包含大约100,000名员工的Java列表。现在我想快速从该列表中删除特定的员工对象。有哪些可能的方法可以在不遍历整个列表的情况下完成此操作?(如果我逐个遍历每个对象,比较细节然后删除:这种情况需要很长时间)
O(log N)
注意:从ArrayList中实际删除元素的时间复杂度为O(n)
,而LinkedList的删除时间复杂度为O(1)
,但在其中进行二分查找将是无意义的,即比O(N)
慢得多。O(1)
。如果您想保留某些顺序(例如插入顺序),则可以使用LinkedHashSet
。enabled
这样的字段,将其设置为false
,而不是实际删除它。您可以稍后作为批处理作业在某个时间(隔夜或周末)将其删除。O(1)
操作,但遍历整个列表的长度是O(n)
,正如你所猜测的那样,不是非常快。