Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Serbis
3 / 3 / 2
Регистрация: 13.07.2012
Сообщений: 123
#1

Вытащить из HashSet объект HashMap - Программирование Android

10.03.2015, 17:29. Просмотров 561. Ответов 3
Метки нет (Все метки)

В первую очередь хочу высказать недоумение касаемо того, зачем разработчики системы в качестве массивов в Shared Preference выбрали столько неподходящий для этой задачи HashSet. И так, есть вот такой код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
name.add(String.valueOf(etName.getText()));     //Добавляем в массив текущих значений то что мы взяли в диалоге
                id.add(String.valueOf(etId.getText()));
 
                for (int i = 0; i < name.size(); i++) {     //Перевеодим мтз в хеш объеты
                    m = new HashMap<String, Object>();
                    m.put(ATTRIBUTE_NAME_NAME, name.get(i));
                    m.put(ATTRIBUTE_NAME_ID, id.get(i));
                    setConnection.add(m);
 
                }
 
                SharedPreferences.Editor editor = mSettings.edit();
                editor.putStringSet(APP_PREFERENCES_CONNECTION_NAME, setConnection);      //Пишем хеш объекты в настройки
                editor.apply();
Добавлено через 6 минут
В первую очередь хочу высказать недоумение касаемо того, зачем разработчики системы в качестве массивов в Shared Preference выбрали столько неподходящий для этой задачи HashSet. И так, есть вот такой код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
                name.add(String.valueOf(etName.getText()));     //Добавляем в массив текущих значений то что мы взяли в диалоге
                id.add(String.valueOf(etId.getText()));
 
                for (int i = 0; i < name.size(); i++) {     
                    m = new HashMap<String, Object>();
                    m.put(ATTRIBUTE_NAME_NAME, name.get(i));
                    m.put(ATTRIBUTE_NAME_ID, id.get(i));
                    setConnection.add(m);
 
                }
 
                SharedPreferences.Editor editor = mSettings.edit();
                editor.putStringSet(APP_PREFERENCES_CONNECTION_NAME, setConnection);      //Пишем хеш объекты в настройки
                editor.apply();
И он делает то, что от него просят, в файле настроек формируется записи вот такого рода

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <set name="connection_name">
        <map>
            <string name="id">222</string>
            <string name="name">bbb</string>
        </map>
        <map>
            <string name="id">333</string>
            <string name="name">ccc</string>
        </map>
        <map>
            <string name="id">111</string>
            <string name="name">aaa</string>
        </map>
    </set>
</map>
А вот теперь вопрос, как это оттуда вытащить, если HashSet умеет приводится только к String[] и из него нельзя вытащить элемент по позиции. С просто массивом все работает вот так:

Java
1
2
3
4
5
                String[] arrConnection = (String[]) setName.toArray(new String[setName.size()]);      //Приводим хеш к строковому массиву
 
                for (int i = 0; i < arrConnection.size(); i++) {      //Инициируем мтз из полученного строкового массива
                    name.add(arrName[i]);
                }
Что делать в таком случае с HashMap?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2015, 17:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вытащить из HashSet объект HashMap (Программирование Android):

SharedPreferences, HashMap - Программирование Android
Хочу сделать Save , Load в sharedPreferences и вывести результат в Log. не вижу ошибки :wall: Спасибо. public class...

Заполнение ListView из HashMap - Программирование Android
Добрый день. Столкнулся с некоторой проблемой при наполнении ListView с помощью HashMap. Проблема вот в чем, заполняю HashMap с помощью...

Пропадают данные из HashMap - Программирование Android
Задание такое: парсим данные и закидываем их в HashMap. При записи они есть, но при чтении их нет! Что делать, помогите пожалуйста! Буду...

Hashmap вывод в адаптер - Программирование Android
Здравствуйте.Имеется проблема сделал приложение которое парсит данные с сайта и добавляет в listview делал он так znak_z.setAdapter((new...

Как рандомно получить значение из hashmap'a через ключ - Программирование Android
Предположим у меня есть два ImageButton'a, Hashmap и картинки, помещенные в этот hashmap. Мне нужно используя randomizer рандомно...

Как добавить в HashSet объект класса Color - Java SE
Подскажите пожалуйста почему я не могу добавить объекты класса Color в HashSet? Eclipse выдает ошибку Exception in thread &quot;main&quot;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1574 / 1316 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
10.03.2015, 18:27 #2
Serbis, а если сериализовать в json? http://stackoverflow.com/a/26709199
0
Serbis
3 / 3 / 2
Регистрация: 13.07.2012
Сообщений: 123
10.03.2015, 19:10  [ТС] #3
Короче я все, нафиг, переделал все под SQL, потому что это дичь какая то. Суть в следующем, в этом массиве должен хранится список подключений к серверам. Он не может быть по логике большим, и в сути шара это идеальное для его хранения место. Но объект массив шары, это хеш объект. Т. е. если создать два массива, в одном ip в другом name, то они просто перемешаются, так как это хеш, он так работает. Выхода два, либо использовать treehashmap, который запаришься приводить в HashMap, либо писать туда Map, который непонятно как оттуда вытаскивать. В итоге функция чтения/записи простого списка превратилось в огромного слона с кучей циклов и пробразований. Зачем это нужно, не понятно, зачем это было сделано разрабами, еще более непонятно. Единственный плюс на собеседовании - да я умею работать со всеми видами хешей. Опять вопрос, нахрена...
0
Pablito
2484 / 1929 / 601
Регистрация: 12.05.2014
Сообщений: 6,782
Завершенные тесты: 1
11.03.2015, 09:35 #4
Не уверен что правильно понял задачу, но расскажу как однажды делал я.
Надо было сохранять что-то типа избранного. Объекты выглядели так:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
final public class FavItem implements Serializable {
    private static final long serialVersionUID = 42L;
    String name;
    String rasklad;
    String dateTime;
    boolean[] lockedCardArray;
    boolean[] closeCardArray;
 
    FavItem(String name, String rasklad, String dt, boolean[] lc) {
        this.name = name;
        this.rasklad = rasklad;
        this.dateTime = dt;
        this.lockedCardArray = lc;
    }
}

Сохранял так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void saveFavArray(ArrayList<FavItem> favArray) {
        FileOutputStream fos = null;
        ObjectOutputStream os = null;
        try {
            fos = openFileOutput("favArray.lol", Context.MODE_PRIVATE);
            os = new ObjectOutputStream(fos);
            os.writeObject(favArray);
        } catch (IOException ex) {
            ex.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    os.close();
                    fos.close();
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2015, 09:35
Привет! Вот еще темы с ответами:

HashMap - в качестве ключа объект - Java SE
Добрый день! Мне понадобилось решить такую задачу: ключ - комплексный объект, состоящий из 64 битного целого числа и строки из 5...

Обсуждение HashSet, в частности- хранит HashSet объекты отсортированными или нет? - Java
Что-то я не могу понять. Смотрите, мне надо запихать 10000 случайных элементов типа Integer в порядке их генерирования в HashSet, а потом...

Вставка HashMap в HashMap меняет все элементы - Java SE
Вставляю HashMap в HashMap генерируя карту доски для шахмат, привожу тестовый пример, вставляется только данные последней ячейки доски, с...

Как вытащить из IEnumerable коллекции объект по запросу - C# MVC
Здравствуйте! В контроллере во вьюху передается две коллекции, коллекции представлены в виде IEnumerable&lt;T&gt;: ViewData =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.03.2015, 09:35
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru