Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление элементов из списка ArrayList / 11 сообщений из 11, страница 1 из 1
21.09.2013, 22:03:20
    #38403678
Mr.Genius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
Всем привет!

Имеется такой простейший код:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ArrayList<String> list = new ArrayList<String>();

Collections.addAll(list, "a","b","c","d","e","f");

list.remove(0);
list.remove(1);
list.remove(2);

for (String s: list) {
     System.out.print(s);
}



Почему у нас выводится "bdf" вместо "def" ?

Спасибо заранее!
...
Рейтинг: 0 / 0
21.09.2013, 22:11:07
    #38403684
cdtyjv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
Потому, что элементы сдвигаются к "голове" при удалении из середины. Вот такой код выдаст тот результат, который вы ожидаете:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ArrayList<String> list = new ArrayList<String>();

Collections.addAll(list, "a","b","c","d","e","f");

list.remove(2);
list.remove(1);
list.remove(0);

for (String s: list) {
     System.out.print(s);
}
...
Рейтинг: 0 / 0
21.09.2013, 22:11:48
    #38403685
imperfekt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
При каждом удалении элемента, индексы оставшихся изменяются (если удалённый элемент имел меньший индекс, т.е. находился, условно говоря, слева).

Первый remove даёт ["b","c","d","e","f"].
Второй - ["b","d","e","f"].
Третий - ["b","d","f"].
...
Рейтинг: 0 / 0
21.09.2013, 22:17:44
    #38403688
Mr.Genius
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
Всем спасибо)) Вопрос очевидный, чет тупил)
...
Рейтинг: 0 / 0
21.09.2013, 22:31:02
    #38403701
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
list.remove(0);
list.remove(0);
list.remove(0);
...
Рейтинг: 0 / 0
21.09.2013, 23:36:06
    #38403719
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
javapeckerlist.remove(0);
list.remove(0);
list.remove(0);
for(int i=0; i < 3; i++){
list.remove(0);
}

тогда уж:)
...
Рейтинг: 0 / 0
22.09.2013, 01:41:13
    #38403745
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
забыл ник,
я так, концепцию отразить
...
Рейтинг: 0 / 0
22.09.2013, 09:34:09
    #38403792
buldozer01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
list.subList(0,2).clear();

Свеном ты там предложил кстати самый неоптимальный путь удаления.
...
Рейтинг: 0 / 0
22.09.2013, 12:06:02
    #38403820
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
buldozer01list.subList(0,2).clear();

list.subList(0,3).clear();
...
Рейтинг: 0 / 0
22.09.2013, 12:15:58
    #38403823
buldozer01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
забыл никbuldozer01list.subList(0,2).clear();

list.subList(0,3).clear();

Parameters:
fromIndex - low endpoint (inclusive) of the subList
toIndex - high endpoint (exclusive) of the subList
Returns:
a view of the specified range within this list
Throws:
IndexOutOfBoundsException - endpoint index value out of range (fromIndex < 0 || toIndex > size)
IllegalArgumentException - if the endpoint indices are out of order (fromIndex > toIndex)


Точно :) Спасибо.
...
Рейтинг: 0 / 0
22.09.2013, 12:17:12
    #38403824
cdtyjv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из списка ArrayList
buldozer01 ,
А чем ваш вариант "оптимальнее"?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление элементов из списка ArrayList / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]