Java将ArrayList转换为字符串并返回ArrayList?

2022-09-05 00:06:48

我想将ArrayList保存到共享首选项,所以我需要将其转换为字符串并返回,这就是我正在做的事情:

// Save to shared preferences
SharedPreferences sharedPref = this.getPreferences(Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = this.getPreferences(Activity.MODE_PRIVATE).edit();
editor.putString("myAppsArr", myAppsArr.toString());
editor.commit();

我可以用它来检索它,但我不知道如何将数组字符串转换回数组列表。如何做到这一点?String arrayString = sharedPref.getString("yourKey", null);


我的数组看起来像这样:

[item1,item2,item3]

答案 1

您有2个选择:

  1. 手动解析字符串并重新创建数组列表。这将是相当乏味的。
  2. 使用像Google的Gson库这样的JSON库来存储和检索对象作为JSON字符串。这是一个轻量级的库,备受推崇和流行。对于您来说,这将是一个理想的解决方案,所需工作最少。例如,

    // How to store JSON string
    Gson gson = new Gson();
    // This can be any object. Does not have to be an arraylist.
    String json = gson.toJson(myAppsArr);
    
    // How to retrieve your Java object back from the string
    Gson gson = new Gson();
    DataObject obj = gson.fromJson(arrayString, ArrayList.class);
    

答案 2

试试这个

ArrayList<String> array = Arrays.asList(arrayString.split(","))

如果逗号用作分隔符,并且没有一个项目具有分隔符,则此方法将起作用。