java - 在java中从列表或数组列表中删除中间元素的最佳方法?

标签 java arrays list arraylist data-structures

我需要按顺序从排序数据中删除中间元素。最好的方法是什么?由于 LinkedList 操作需要 n/2 时间来删除元素,因此数组列表会更快。但另一方面,数组列表需要时间将所有元素向左移动,这也效率不高。其他数据结构可能有用吗?

最佳答案

删除中间元素由两部分组成:

  1. 查找中间元素
  2. 删除该元素

ArrayList 随机访问的时间复杂度为 O(1),因此对于 Array 来说,第一步 很快。虽然LinkedList在删除时是O(1)(给定节点),所以第二步骤对于List来说很容易。

您想要的是两全其美

IMO如果您编写自定义(或扩展现有)LinkedList,这很容易实现。您需要额外的 middle 引用变量,它将:

  • 如果大小变为奇数,则在插入时移至下一个
  • 如果大小变为奇数,则删除后移至上一个

您也可以在两种情况下执行偶数,但它们必须相同(偶数或奇数)。

关于java - 在java中从列表或数组列表中删除中间元素的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50665945/

相关文章:

java - instanceof 不适用于 "or"

java - 标签数组的最后一个标签定位错误

PHP 将多个数组中的数组值操作为单个数组

python - 防止 "if"python 中的部分字符串匹配)

python - 从嵌套列表和元组列表中获取所有唯一字符串

java - DAO Java 中的子查询

java - 签名小程序中的安全警告

java - 按数字升序对字符串列表进行排序,并保留多个小数

arrays - bash 中大于 32767 的数组中的随机元素

java - 如何列出目录及其所有子目录中的所有文件