Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > boolean removeAll(Collection<?> c)


Автор: polosatij 15.11.2004, 15:51
народ.. столкнулся с такой проблемой недавно:

Код

java.awt.List list= new ArrayList();

...

list.add(new int[]{1, 2, 3});
list.add(new int[]{2, 4, 5});
...

list.removeAll(...); // ... = Collection ??


метода removeAll запрашивает в качестве параметра коллекцию.. smile
и как мне в данном примере осушествить removeAll smile

я поступил следуюшем образом:

Код

list = new ArrayList();


но мне кажется что это немного коряво.. из за того, что наверно в памяти останется (неизвестно на сколько, пока GC очистит) старый объект list.. я не прав smile

Автор: Domestic Cat 15.11.2004, 16:14
Если ты хочешь удалить все элементы листа, то есть clear() smile

Автор: Zandr 23.11.2004, 08:12
Я че-то недопонял smile smile smile smile
Domestic Cat, ты то куда смотрел?
Код

java.awt.List list= new ArrayList();

smile
Короче, если ArrayList, то это тоже Collection (как и LinkedList и все, что implements Collection) так что смело юзай
Код

list.removeAll();


Автор: Domestic Cat 23.11.2004, 08:20
Цитата(Zandr @ 22.11.2004, 23:12)
Короче, если ArrayList, то это тоже Collection (как и LinkedList и все, что implements Collection) так что смело юзай
Код

list.removeAll();


При повторном рассмотрении ясно что ничего не ясно - то ли это аветешный лист, то ли утилитный. Скорее всего, утилитный ибо к аветешному нафик добавлять массивы?

Тогда:
1. У интерфейса List метода removeAll() нет, есть метод removeAll(Collection).

2. clear() является наиболее оптимальным решением

Автор: Zandr 23.11.2004, 12:18
Блин smile И то верно smile Чет я тоже затупил smile smile smile

Автор: DarkDS 23.11.2004, 15:36
Цитата(Domestic @ 23.11.2004, 08:20)
Тогда:
1. У интерфейса List метода removeAll() нет, есть метод removeAll(Collection).

Предназначенно чтобы удалить из листа все элементы, которые есть в коллекции
То есть это сделанно чтобы не перебирать коллекцию и не удалять поэлементно.

Цитата

2. clear() является наиболее оптимальным решением

Это предназначенно чтобы удалить все элементы из листа.

Автор: Domestic Cat 23.11.2004, 16:14
]о ведь автор пишет:

Цитата
я поступил следуюшем образом:
Код
list = new ArrayList();


значит, подразумевается удаление всех элементов smile

Автор: polosatij 25.11.2004, 15:08
Цитата(Domestic @ 23.11.2004, 16:14)
значит, подразумевается удаление всех элементов


да.. но подразумевается.. старые ведь в памяти остаются пока GC не прийдёт..
или я ошибаюсь smile

Автор: AntonSaburov 25.11.2004, 16:09
Цитата(polosatij @ 25.11.2004, 16:08)
старые ведь в памяти остаются пока GC не прийдёт

Вот сразу видно, что человек на Си сидел smile

Да тебе уже эти элементы НЕ ДОСТУПНЫ. Если конечно на них еще кто-то не указывает. Это типа как бумагу выкинуть в мусорное ведро. Она как бы еще есть, но через час придет уборщица и все уберет.

Автор: Domestic Cat 25.11.2004, 16:09
Цитата
да.. но подразумевается.. старые ведь в памяти остаются пока GC не прийдёт..
или я ошибаюсь 


естественно, их удаляет GC

Автор: Entry_N3 26.3.2007, 21:18
AntonSaburov, классная аналогия с мусорным ведром  smile 

Автор: nornad 26.3.2007, 21:48
Цитата(polosatij @  25.11.2004,  18:08 Найти цитируемый пост)
да.. но подразумевается.. старые ведь в памяти остаются пока GC не прийдёт.. 

А вы, собственно, хотите, чтобы объекты однозначно сразу же и были удалены из памяти? Здесь вам не тут и такого вам не гарантирует даже принудительный запуск GC.  smile 

Автор: powerOn 26.3.2007, 22:19
вы бы еше постарее тему подняли.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)