【发布时间】:2012-06-03 14:08:09
【问题描述】:
是否有一种有效的方法可以从List 中删除 X 元素的范围(例如尾部),例如LinkedList 在 Java 中?
显然可以一个一个地删除最后一个元素,这应该会导致 O(X) 级别的性能。至少对于 LinkedList 实例,它应该有可能具有 O(1) 性能(通过设置要删除的第一个元素周围的引用并设置头/尾引用)。不幸的是,我在List 或LinkedList 中没有看到任何方法可以一次性删除最后一个元素。
目前我正在考虑使用List.subList()替换列表,但我不确定这是否具有相同的性能。至少在代码中会更清楚,另一方面我会失去LinkedList 提供的附加功能。
我主要将 List 用作堆栈,LinkedList 似乎是最好的选择,至少在语义方面。
【问题讨论】:
-
您是否阅读过 subList() 的注意事项 - 即它只是一个视图,如果支持列表在结构上被修改,那么所有的赌注都将失败?
-
您的 O(1) 性能忽略了查找最后 N 个元素的 O(N) 成本。
标签: java list collections stack