Как удалить все из ArrayList в Java, кроме первого элемента - PullRequest
18 голосов
/ 23 июня 2010

Я новичок в программировании на Java, программирую на php, поэтому я привык к такому типу цикла:

int size = mapOverlays.size();
for(int n=1;n<size;n++)
{
    mapOverlays.remove(n);
}

Итак, я хочу удалить все, кроме первого элемента, так почему же это не работает? Как я понял, после удаления ключи массива переставляются или нет?

Ответы [ 11 ]

0 голосов
/ 23 июня 2010

Если вы используете реализацию java.util.List вместо массива, размер массива уменьшается при каждом удалении чего-либо, и элемент n+1 заменяет элемент n. Этот код в конечном итоге приведет к ArrayIndecOutOfBoundsException, когда n станет Greated, чем последний индекс в списке.

Java также имеет тип массива, размер которого нельзя изменить:

Object[] mapOverlay = //initialize the array here
int size = mapOverlay.length;
for(int n=1;n<size;n++)
{
    mapOverlay[n] = null;
}

Я не знаю PHP, но звучит так, будто он близок к вашему поведению. Однако реализации List более гибкие и удобные в использовании, чем массивы.

РЕДАКТИРОВАТЬ: Вот ссылка на Javadoc List.remove(int): http://java.sun.com/javase/6/docs/api/java/util/List.html#remove%28int%29

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...