gpt4 book ai didi

java - 删除数组列表中的所有其他元素

转载 作者:行者123 更新时间:2023-12-01 14:06:29 26 4
gpt4 key购买 nike

for(int i = 0; i < points.size(); i = i+lines) {
points.remove(i);
}

这里的想法是,用户可以通过输入 int 删除数组列表的每隔一个空格或每隔三个空格或每四个空格..等等。 “行”将跳过空格。但是,我意识到每次弄乱跳过值时列表都会变小。我该如何解释?我正在使用 ArrayList库来自 java 所以没有选择只在数组列表类中添加一个方法。任何帮助将不胜感激。

最佳答案

我已经 perfomed a benchmark到目前为止对这个问题提出的所有答案。

对于具有 ~100K 个元素(每个是一个字符串)的 ArrayList,结果如下:

removeUsingRemoveAll  took 15018 milliseconds (sleepToken)
removeUsingIter took 216 milliseconds (Arvind Kumar Avinash)
removeFromEnd took 94 milliseconds (WJS)

从 ArrayList 中删除元素是 Θ(n)操作,因为它必须将数组中的所有剩余元素向左移动(即它很慢!)。 WJS 建议首先从列表末尾删除元素,这似乎是迄今为止提出的最快(就地)方法。

但是,对于这个问题,我强烈建议考虑替代数据结构,例如 LinkedList ,旨在快速删除(或添加)列表中间的元素。如果您有足够的内存,另一种选择是在单独的列表中构建结果,而不是尝试就地修改列表:

removeUsingIterLinked took    12 milliseconds
removeUsingSecondList took 3 milliseconds (sleepToken with WJS's comment)

关于java - 删除数组列表中的所有其他元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61845242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com