我正在努力将 ArrayList
转换为 HashSet
,然后将 HashSet
转换为 ArrayList。
它工作得很好。我已经在订单中传递了一个ArrayList
。但我得到的结果以不同的顺序。
怎么解决这个问题呢?
public void saveAlbumList(ArrayList<String> values) {
Set<String> set = new HashSet<String>(values);
pref_selected_photos.edit().putStringSet("AlbumList", set).commit();
}
public ArrayList<String> getAlbumList() {
ArrayList<String> pathList = new ArrayList<String>();
try {
Set<String> set = pref_selected_photos.getStringSet("AlbumList",
null);
if (set != null && set.size() > 0) {
pathList = new ArrayList<String>(set);
}
} catch (Exception e) {
e.printStackTrace();
}
return pathList;
}
提前致谢!
最佳答案
正如@dreamCoder提到的,您需要使用LinkedHashSet
Don't directly assign the values to
LinkedHashSet
. Iterate theArrayList
and add it
更改您的方法代码:
public void saveAlbumList(ArrayList<String> values) {
Set<String> set = new LinkedHashSet();
for(String name : values){
set.add(name);
}
pref_selected_photos.edit().putStringSet("AlbumList", set).commit();
}
希望对你有帮助:)
关于java - 从 HashSet 转换为 ArrayList 时顺序丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26402829/