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

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

Восстановить пароль Регистрация
 
Serbis
3 / 3 / 2
Регистрация: 13.07.2012
Сообщений: 121
10.03.2015, 17:29     Вытащить из HashSet объект HashMap #1
В первую очередь хочу высказать недоумение касаемо того, зачем разработчики системы в качестве массивов в 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?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2015, 17:29     Вытащить из HashSet объект HashMap
Посмотрите здесь:

Заполнение ListView из HashMap Android
Android Hashmap вывод в адаптер
Можно ли вытащить номер телефона? Android
Android Вытащить из сайта определенную таблицу
Как рандомно получить значение из hashmap'a через ключ Android
Android Вытащить информацию из базы данных Sqlite
Android Вытащить флеш на дроид
Как вытащить значение из таблицы бд sqlite Android
Android SharedPreferences, HashMap
Android Вытащить информацию из SQLite на новое Activity
Пропадают данные из HashMap Android
Android Как вытащить файл из эмулятора?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
10.03.2015, 18:27     Вытащить из HashSet объект HashMap #2
Serbis, а если сериализовать в json? http://stackoverflow.com/a/26709199
Serbis
3 / 3 / 2
Регистрация: 13.07.2012
Сообщений: 121
10.03.2015, 19:10  [ТС]     Вытащить из HashSet объект HashMap #3
Короче я все, нафиг, переделал все под SQL, потому что это дичь какая то. Суть в следующем, в этом массиве должен хранится список подключений к серверам. Он не может быть по логике большим, и в сути шара это идеальное для его хранения место. Но объект массив шары, это хеш объект. Т. е. если создать два массива, в одном ip в другом name, то они просто перемешаются, так как это хеш, он так работает. Выхода два, либо использовать treehashmap, который запаришься приводить в HashMap, либо писать туда Map, который непонятно как оттуда вытаскивать. В итоге функция чтения/записи простого списка превратилось в огромного слона с кучей циклов и пробразований. Зачем это нужно, не понятно, зачем это было сделано разрабами, еще более непонятно. Единственный плюс на собеседовании - да я умею работать со всеми видами хешей. Опять вопрос, нахрена...
Паблито
не спать!
1876 / 1610 / 497
Регистрация: 12.05.2014
Сообщений: 5,819
Завершенные тесты: 1
11.03.2015, 09:35     Вытащить из HashSet объект HashMap #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();
                }
            }
        }
    }
Yandex
Объявления
11.03.2015, 09:35     Вытащить из HashSet объект HashMap
Ответ Создать тему
Опции темы

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