过滤数组中的差异

时间:2011-12-08 09:37:00

标签: java android arrays math filter

我想通过计算差异来过滤数组。这是代码:

public void compressData(List<Long> array){
    for(int i = 0; i <= array.size(); i++){
        if(Math.abs(array.get(i) - (array.get(i + 1))) >= 100){
            newArray.add(array.get(i));
        }
    }
}

假设我有一个[1,3,5,10]的数组。我希望数组中的数字之间的范围至少为5,因此在这种情况下应删除数字3。所以我想比较array [i]和array [i + 1]

上面的代码不起作用(我知道它实际上不起作用,我想我只是绝望)因为array.get(i - 1)array.get(i + 1)会给出ArrayOutOfIndexException

提前谢谢=)

2 个答案:

答案 0 :(得分:3)

如何将for行更改为:

for(int i = 0; i < array.size()-1; i++)

然后你可以使用array.get(i + 1)

答案 1 :(得分:0)

试试此代码

int diff = 100;
if (array.size() > 0) {
  newArray.add(array.get(0));    
}
int prev = array.get(0);
for(int i = 1; i < array.size(); i++){
        int cur = array.get(i);
        if(cur - prev) >= diff){
            newArray.add(cur);
            prev = cur;
        }
    }