Страница 1 из 1

Как лучше организовать хранение данных?

Добавлено: 09 янв 2014, 21:37
kondra007
Здравствуйте, я начинающий разработчик, опыт в Java есть небольшой. Возникло желание написать определенную программу под Андроид.
Что она делает: Выбирается человек из спиннера и в следующем активити показывается его Имя, Возраст, День и Месяц рождения.
Данные берутся из текстового файла, который парсится так: 01302002 = Человек с номером 01 (они все закодированы), возраст 30 лет, родился 20.02 (20 февраля).

В спиннере выбор - Иванов, Петров, Сидоров...
Выбираем Иванова, его код 01. Потом парсится файл на наличие первых двух символов 0 и 1 и формируется ListView.

Соответственно, надо обеспечить получение фамилии по номеру и номера по фамилии, и чтобы всё это хранилось централизованно.

На ум приходит только Map (типа ArrayMap).
Вопросы: 1) Можно ли потом поле Значений из ArrayMap "скормить" спиннеру, чтоб его образовать? 2) Нормально ли будет осуществляться поиск по ArrayMap?

Re: Как лучше организовать хранение данных?

Добавлено: 09 янв 2014, 21:47
Foenix
а вы что, хотите как-то этот мэп принципиально хранить в текстовых файлах и парсить?

Re: Как лучше организовать хранение данных?

Добавлено: 10 янв 2014, 00:31
altwin
kondra007 писал(а):Здравствуйте, я начинающий разработчик, опыт в Java есть небольшой. Возникло желание написать определенную программу под Андроид.
Что она делает: Выбирается человек из спиннера и в следующем активити показывается его Имя, Возраст, День и Месяц рождения.
Данные берутся из текстового файла, который парсится так: 01302002 = Человек с номером 01 (они все закодированы), возраст 30 лет, родился 20.02 (20 февраля).

В спиннере выбор - Иванов, Петров, Сидоров...
Выбираем Иванова, его код 01. Потом парсится файл на наличие первых двух символов 0 и 1 и формируется ListView.

Соответственно, надо обеспечить получение фамилии по номеру и номера по фамилии, и чтобы всё это хранилось централизованно.

На ум приходит только Map (типа ArrayMap).
Вопросы: 1) Можно ли потом поле Значений из ArrayMap "скормить" спиннеру, чтоб его образовать? 2) Нормально ли будет осуществляться поиск по ArrayMap?
1. Сомневаюсь, что это будет сильно сложнее этого: Android Spinner with Hashmap
2. ArrayMap, по сути это хеш таблица, соответственно поиск будет очень быстрым. Вы вполне можете использовать индекс(01302002), как ключ - это вполне стандартное решение. Значение же - объект с остальными полями.

P.S. понятно, что все это зависит от формата входящих данных(к примеру выхода нет, если получать их из 1с), но реляционная база тут сильно упростила бы жизнь.

Re: Как лучше организовать хранение данных?

Добавлено: 10 янв 2014, 02:06
kondra007
Хм..интересно, но я нашел ещё хорошее решение: https://code.google.com/p/guava-libraries/
Библиотека Guava, в ней есть замечательная коллекция - BiMap - двусторонняя мапа. Если надо по значению искать ключ, то просто добавляем метод inverse()
И ещё там нашлась отличная её разновидность ImmutableBiMap - не изменяющаяся во времени мапа. То есть, она даже сохраняет порядок введенных значений.

Re: Как лучше организовать хранение данных?

Добавлено: 10 янв 2014, 10:11
adarash
ОФФТОП!!! Почему овца?

Re: Как лучше организовать хранение данных?

Добавлено: 10 янв 2014, 11:35
Mikhail_dev
kondra007 писал(а):Хм..интересно, но я нашел ещё хорошее решение: https://code.google.com/p/guava-libraries/
Библиотека Guava, в ней есть замечательная коллекция - BiMap - двусторонняя мапа. Если надо по значению искать ключ, то просто добавляем метод inverse()
И ещё там нашлась отличная её разновидность ImmutableBiMap - не изменяющаяся во времени мапа. То есть, она даже сохраняет порядок введенных значений.
LinkedHashMap тоже сохраняет порядок входящих данных. Может стоит использовать стандартные коллекции, которых предостаточно?

Re: Как лучше организовать хранение данных?

Добавлено: 10 янв 2014, 13:13
kondra007
adarash, оффтоп-ответ: потому на на форуме Mozilla Firefox давно ещё требовались аватарки очень маленькие и овца - первая картинка нужного размера, что мне попалась.
(как ещё вариант: я очень хреновый программист :D )

m090050 - сомневаюсь, что в LinkedHashMap можно искать ключи по значениям =)