Массив для установки, сохранения в sharedpreferences, извлечения в качестве набора, обратно в массив

103
13

Я застрял на чем-то, что сначала казалось мне очень легким, но я просто не могу понять. Я хочу сохранить массив целых чисел (int []) в SharedPreferences, желательно как набор, а не как отдельные записи в SharedPreferences, потому что таким образом я на 100% уверен, что порядок этого int [] останется прежним:

int[] myIntArray = new int[]{1,2,3};
Set valueSet = new HashSet(asList(myIntArray));

SharedPreferences sharedPreferences = context.getSharedPreferences("name",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();

editor.putStringSet("key", valueSet);
editor.commit();

Когда я верну этот набор

SharedPreferences sharedPreferences = context.getSharedPreferences("name",Context.MODE_PRIVATE);
Set set = sharedPreferences.getStringSet("key", null);

В отладке я получаю набор, который структурирован следующим образом:

->set {HashSet}
----->0 {int[]}
---------->0 = 1
---------->1 = 2
---------->2 = 3

Я просто не могу понять, как я могу получить этот int [] из этого набора обратно в локальную переменную int [].

Ближайший я добираюсь до своей цели:

Set set = sharedPreferences.getStringSet("imageverdict", null);
Object[] o = set.toArray();
Object o1 = o[0];

Это дает мне возможность отладки

->o1 {int[]}
---->0 = 1
---->1 = 2
---->2 = 3

Но когда я пытаюсь получить любые значения из этого, сделав int я = o1[1]; Я получаю сообщение об ошибке в редакторе: Array type expected; found 'java.lang.object' Array type expected; found 'java.lang.object'.

Мне это кажется странным, так как во время отладки o1 отображается как int [], в то время как в редакторе студия Android показывает мне, что это объект.

Любая помощь приветствуется!

спросил(а) 2017-12-27T01:03:00+03:00 2 года, 6 месяцев назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема