我想通过计算差异来过滤数组。这是代码:
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
提前谢谢=)
答案 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;
}
}