Два решения:
(1) Использование http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html
Он имеет функции split / join, которые позволяют вам объединять и разбивать целые числа в один ряд:
StringUtils.join([1, 2, 3], ';') = "1;2;3"
StringUtils.split("1;2;3", ';') = ["1", "2", "3"]
Однако вам все равно придется преобразовывать строки обратно в целые числа.
На самом деле, для разбиения java.lang.String.split()
будет работать так же хорошо:
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String)
(2) Используйте SharedPreferences.putStringSet () (API 11):
SharedPreferences.Editor editor = preferences.edit();
int count = this.intSet.size();
if (count > 0) {
Set<String> theSet = new HashSet<String>();
for (Long l : this.intSet) {
theSet.add(String.valueOf(l));
}
editor.putStringSet(PREFS_KEY, theSet);
} else {
editor.remove(PREFS_KEY);
}
editor.commit();
И чтобы вернуть его:
Set<String> theSet = this.preferences.getStringSet(PREFS_KEY, null);
if (theSet != null && !theSet.isEmpty()) {
this.intSet.clear();
for (String s : theSet) {
this.intSet.add(Integer.valueOf(s));
}
}
Этот код не перехватывает NPE или NumberFormatExceptions, поскольку в противном случае intSet не содержит нулевых значений. Но, конечно, если вы не можете гарантировать, что в вашем коде вы должны окружить это попыткой / уловом.