Фильтровать различия в массиве - PullRequest
0 голосов
/ 08 декабря 2011

Я хочу отфильтровать массив, рассчитав различия. Вот код:

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 должно быть удалено. Поэтому я хочу сравнить массив [i] с массивом [i + 1]

Приведенный выше код не работает (я знаю, что он не будет работать на самом деле, я думаю, что просто отчаялся), потому что array.get(i - 1) или array.get(i + 1) даст ArrayOutOfIndexException

Заранее спасибо =)

Ответы [ 2 ]

3 голосов
/ 08 декабря 2011

как насчет изменения строки for на:

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

тогда вы можете использовать array.get (i + 1)

0 голосов
/ 08 декабря 2011

Попробуйте этот код

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;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...