有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android与ArrayList共享首选项

我正在尝试将ArrayList作为共享首选项保存和检索

我的ArrayList中有三个名为arra的项,但当我尝试在set.addAll(arr)中添加集合中的值时,只添加了两个项

以下代码中是否有任何更正,以便我可以将arraylist正确保存为共享首选项

 SharedPreferences prefs = this.getSharedPreferences(filename,Context.MODE_PRIVATE);

                    Set<String> set = prefs.getStringSet(filename, null);
                    arra = new ArrayList<String>();
                    for (String str : set)
                       arra.add(str);

拯救ArrayList

 SharedPreferences prefs=this.getSharedPreferences(filename,Context.MODE_PRIVATE);
        SharedPreferences.Editor edit=prefs.edit();

        Set<String> set = new HashSet<String>();
        set.addAll(arr);
        edit.putStringSet(filename, set);
        edit.commit();

共 (2) 个答案

  1. # 1 楼答案

    您试图将布尔真值和假值存储为字符串。这意味着您只能有两个可能的字符串,“true”和“false”。集合类型容器只存储唯一的值,没有重复的值。所以在你的集合中,你最多只能有两个不同的值,“真”和“假”

    如果要存储列表,可能需要以某种方式将其转换为字符串,以便保留实际值和顺序。然后在读取该值时,解析字符串以重建列表

  2. # 2 楼答案

    java collections中的集合不允许插入重复的条目,并且ArrayList中三项中有两项是相同的。这就是其中只有两个被保存在SharedReferences中的原因