gpt4 book ai didi

java - 需要从 ArrayLists 的 ArrayList 中删除元素

转载 作者:行者123 更新时间:2023-12-02 01:28:17 25 4
gpt4 key购买 nike

我有处理 wav 文件并将 double 值(音频样本)集合排序到 ArrayList 中的代码,然后将每个 ArrayList 排序到 ArrayList 的 ArrayList 中:

ArrayList<Double> sampleEvent = new ArrayList<Double>();

ArrayList<ArrayList<Double>> EventsCollect = new ArrayList<ArrayList<Double>>();

我有代码尝试从集合中删除小于特定大小的 ArrayList。

然而,它所做的似乎只是列表的一半,并且没有从集合中删除正确的 ArrayList。

请参阅下面的代码:

for (int loop = 0 ;   loop <  EventsCollect.size(); loop++) {
if ( EventsCollect.get(loop).size() < 200000) {
EventsCollect.remove(loop);
}
}

执行此操作后,ArrayList 仍保留在集合中,其大小仅为三位数。

任何有关如何纠正此问题的建议将不胜感激。

最佳答案

你的问题是,即使你删除了一个元素,你也会增加循环计数器。通过这样做,您可以跳过循环中的一个元素。只需更改您的 if 语句即可:

    int loop = 0; // loop counter
while (loop < EventsCollect.size()) {
if (EventsCollect.get(loop).size() < 200000) {
EventsCollect.remove(loop);
}
else
loop++;
}

或者您可以向后循环 ArrayList:

for (int i = EventsCollect.size() - 1; i >= 0; i --){
if (EventsCollect.get(i).size() > 200000)
EventsCollect.remove(i);
}

这是有效的,因为您总是会循环遍历数组固定的时间。如果您查看代码,EventsCollect.size() 会在删除元素时发生变化,因此不会循环通过每一个元素。这应该是您出现问题的提示。

关于java - 需要从 ArrayLists<Double> 的 ArrayList 中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56518923/

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