删除Int的ArrayList中的连续值

1 java arraylist

我创建了一个ArrayList大约30 000个值,经过排序后,我有很多连续的值,例如:

22001 22002 22003 22004 22010 22011 22020

我希望:22001 22004 22010 22011 22020

ArrayList<Long> l = new ArrayList<Long>(); // with my values
Collections.sort(l);
ArrayList<Long> liste = new ArrayList<Long>();
Run Code Online (Sandbox Code Playgroud)

dar*_*jan 5

我没有测试它,但它应该工作(对于包含3个或更多元素的列表).它在内存使用方面没有得到优化.

ArrayList<Long> resultList= new ArrayList<Long>();
Long prevNumber= l.get(0);
for (int i = 1; i < l.size() - 1; i++) {
    if (prevNumber.equals(l.get(i) - 1) && l.get(i + 1).equals(l.get(i) + 1)) {
        //print 'inbetween' consecutive number
    } else {
        //not a consecutive, copy it to result list
        resultList.add(l.get(i));
    }
    prevNumber= l.get(i);
} 
Run Code Online (Sandbox Code Playgroud)