java - 从 HashSet 转换为 ArrayList 时顺序丢失

标签 java android arraylist set hashset

我正在努力将 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 the ArrayList 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/

相关文章:

Java JTextArea 处理不可显示的 ASCII 序列

java - Autowiring 失败 : Not an managed Type

java - 如何使用自定义构造函数实现 ActionListener?

android - ListView 在创建第二个项目后显示项目

安卓 : Search from Large Arraylist

java - 如何从 ArrayList<Object> 填充 ArrayList<String>

android - 为 Android 构建 Web 服务

java - 如何更改通知的内容而不重新创建它?

Android SQL 数据库 - 未找到 rawQuery() 源

java - "for"函数对 ArrayList 的操作和异常 java.lang.ArrayIndexOutOfBoundsException