5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
1 | |
Сохранение arraylist<class> в памяти устройства22.09.2013, 15:46. Показов 2332. Ответов 20
Метки нет (Все метки)
Добрый день! Подскажите, как привильно сохрянать список с классами? Как я понимаю надо смотреть в сторону SQLite? Допустим класс книга, который имеет имя, описание и номер. Как я понимаю можно создать базу данных в приложении. Но что если класс содержит в себе еще список классов, который так же содежит еще один список. Не получится ли слишком награможденно и скажется ли это на производительности? Заранее спасибо
0
|
22.09.2013, 15:46 | |
Ответы с готовыми решениями:
20
Как поместить в preferences arrayList типа: arraylist<Class> Сохранение содержимого ArrayList'a в файл Сохранение ArrayList в файл и его чтение Сохранение и загрузка ArrayList с помощью FileDialog |
22.09.2013, 15:57 | 2 |
Можно хранить не список объектов класса, а некий id.
Например, класс книга имеет поля id автора, название, описание и номер. А в базе данных есть таблица с авторами и таблица с книгами, и что бы узнать кто автор достаточно взять поле id автора из объекта Книга и сделать запрос в БД. Тут может помочь готовое решение, например: https://bitbucket.org/qbusict/cupboard Там есть примеры, как раз с автором и книгами.
1
|
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
|
|
23.09.2013, 09:51 | 3 |
1. в поле "список библиотек" у объекта "книга" храните json со всеми данными библиотек.
2. создайте таблицу с колонками "id name description number bibles" и напихайте туда столько записей для одной книги, сколько библиотек у нее может быть.
0
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
||||||
23.09.2013, 12:57 [ТС] | 4 | |||||
haribo
Не могли бы вы привести пример, по сохранению arrayList<Топик>? И почему json? с ним будет работать быстрее?
0
|
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
|
|
23.09.2013, 13:12 | 5 |
Таблицы:
Answer: id discription username 1 описание1 user1 2 описание2 user2 3 описание3 user3 4 описание4 user4 Theme: id name link reaction 1 имятемы1 линк1 1 1 имятемы1 линк1 2 1 имятемы1 линк1 3 1 имятемы1 линк1 4 Получается у Темы1 - список реакций (1,2,3,4) Это как вариант, SQL структурированный и правильный, но не самый лучший и быстрый.
1
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
23.09.2013, 13:56 [ТС] | 6 |
Как будет выглядить весь список тем? Надо под каждую тему создавать отдельный файл или все писать в один? Но если список тем перевалит за 1000 тем. Куда сохранять этот файл?
0
|
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
|
|
23.09.2013, 14:50 | 7 |
Какой файл? О чем вы?
0
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
||||||
23.09.2013, 15:54 [ТС] | 8 | |||||
С json дела я не имел особо, но пару раз попадался мне на глаза.
0
|
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
|
|
23.09.2013, 15:56 | 9 |
Вы можете пойти сложным путем записывая json в поле типа text в SQLite БД.
0
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
23.09.2013, 16:00 [ТС] | 10 |
никак не могу уловить вашу мысль...Что мне делать тогда? Можете написать поэтапно, если не затруднит.
0
|
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
|
||||||||||||||||
23.09.2013, 16:21 | 11 | |||||||||||||||
Уговорили, даю пример :-)
Не надо json. У одного топика может быть много тем. В java это так:
1. Создаете в БД SQLite две таблицы, Theme и Topic.
3. Таблица Theme : id - уникальный, автогенерируемый идентификатор темы, name - имя темы, topicid - ссылка на id в таблицу Topic. Таким образом таблицы будут иметь следующий вид:
1
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
23.09.2013, 16:31 [ТС] | 12 |
Спасибо!
Теперь понятно, вы имеете ввиду использование SQLite. Еще вопрос, по базам. Если у меня есть уже существующая тема, и я хочу добавить сразу 10 топиков, какой метод мне использовать? Занать в цикл метод db.insert? или есть другие решения? Как можно узнать id добавленной записи? допустим если сразу создать топик и тему, то в тему нужно передать id топика
0
|
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
|
||||||
23.09.2013, 16:51 | 13 | |||||
1. да в цикле
2.
1
|
5 / 5 / 0
Регистрация: 14.11.2012
Сообщений: 111
|
|
23.09.2013, 17:03 [ТС] | 14 |
Удобно!
И последний вопрос. Объявляю в таблице name unique. Если в таблицу пытаются внести 2 одиноковых имя, произойдет exaption, как я понимаю. Как правильно отловить, была запись в таблицу или нет? Пока знаю только такой способ, но не уверен, правильный ли он: try { db.insert(...); return true; } catch { return false; }
0
|
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
|
|
23.09.2013, 18:36 | 15 |
правильный
0
|
23.09.2013, 19:34 | 16 |
Конечно не правильный. Нужно использовать insertOrThrow
0
|
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
|
|
23.09.2013, 20:52 | 17 |
0
|
41 / 41 / 0
Регистрация: 26.05.2013
Сообщений: 160
|
|
23.09.2013, 23:02 | 19 |
0
|
23.09.2013, 23:14 | 20 |
0
|
23.09.2013, 23:14 | |
23.09.2013, 23:14 | |
Помогаю со студенческими работами здесь
20
Сохранение ArrayList на внешний накопитель и чтение из него Сохранение и загрузка class в бинарный файл Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int') Утечка памяти. class my_array Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |