Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
19 / 19 / 2
Регистрация: 13.07.2012
Сообщений: 164

Вытащить из HashSet объект HashMap

10.03.2015, 17:29. Показов 1635. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.03.2015, 17:29
Ответы с готовыми решениями:

HashSet. Удалить объект-класс из HashSet
Всем привет! Есть код: HashSet&lt;Human&gt; humanHashSet = new HashSet(); humanHashSet.add(new...

Как добавить объект в HashSet из ObjectInputStream
Подскажите как добавить объект в HashSet из ObjectInputStream try(FileInputStream fileInputStream = new FileInputStream(file)){ ...

Ссылка на объект не указывает на экземпляр объекта (HashSet)
Здравствуйте! 1. Объявил static HashSet&lt;String&gt; uniqueList; 2. В конструкторе формы: HashSet&lt;String&gt;...

3
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
10.03.2015, 18:27
Serbis, а если сериализовать в json? http://stackoverflow.com/a/26709199
0
19 / 19 / 2
Регистрация: 13.07.2012
Сообщений: 164
10.03.2015, 19:10  [ТС]
Короче я все, нафиг, переделал все под SQL, потому что это дичь какая то. Суть в следующем, в этом массиве должен хранится список подключений к серверам. Он не может быть по логике большим, и в сути шара это идеальное для его хранения место. Но объект массив шары, это хеш объект. Т. е. если создать два массива, в одном ip в другом name, то они просто перемешаются, так как это хеш, он так работает. Выхода два, либо использовать treehashmap, который запаришься приводить в HashMap, либо писать туда Map, который непонятно как оттуда вытаскивать. В итоге функция чтения/записи простого списка превратилось в огромного слона с кучей циклов и пробразований. Зачем это нужно, не понятно, зачем это было сделано разрабами, еще более непонятно. Единственный плюс на собеседовании - да я умею работать со всеми видами хешей. Опять вопрос, нахрена...
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
11.03.2015, 09:35
Не уверен что правильно понял задачу, но расскажу как однажды делал я.
Надо было сохранять что-то типа избранного. Объекты выглядели так:
Кликните здесь для просмотра всего текста
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.03.2015, 09:35
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru