Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ArrayList в ArrayList-очистка, А что происходит в java? 
:(
    Опции темы
Coocky
Дата 25.6.2013, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Привет. Только изучаю джава.
Есть два контейнера

Код

ArrayList<HashMap<String, SQLiteData>> container = new ArrayList<HashMap<String, SQLiteData>>();
ArrayList<ArrayList<HashMap<String, SQLiteData>>> list_container = new ArrayList<ArrayList<HashMap<String, SQLiteData>>>();


в одной функции делаю так
Код

container.add(map);


затем вот второй функции
Код

list_container.add(container);
 container.clear();  // пока не нужен


и дальше(о боги!!!!)
Код

for (int i = 0; i < list_container.size(); i++) {

ArrayList<HashMap<String, SQLiteData>> item = list_container.get(i);

for (int y = 0; y < item.size(); y++) {
// а он  ПУСТОЙ!


что происходит? неужели удаляется в java по ссылке( container.clear() )?? Не копируется в контейнер?? А как же быть??
ЧТо за бред?


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
danilych
Дата 25.6.2013, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 72
Регистрация: 2.2.2011

Репутация: 3
Всего: 3



Именно по ссылкам.

Код

list_container.add(container); // вы добавили в list_container ссылку. 
container.clear();  // по другой ссылке вы удалили содержимое

 
Данные у вас в памяти только один раз хранятся, вы к ним обращаетесь по ссылкам
PM MAIL   Вверх
Pawl
Дата 1.7.2013, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 649
Регистрация: 22.4.2008
Где: Витебск

Репутация: 7
Всего: 28



Цитата(Coocky @  25.6.2013,  16:09 Найти цитируемый пост)
list_container.add(container); container.clear();

Чтобы после очистки контейнера в list_container оставались данные, надо сделать так:
Код

list_container.add(new ArrayList<HashMap<String, SQLiteData>>(container))

тогда это будут ссылки на разные объекты


--------------------
В действительности всё совсем не так, как на самом деле
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0853 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.