Android 列表和数组集

Android List and Array set

我正在尝试将此信息保存在通过接听电话触发的服务上,但在我使用 .set

后它崩溃了
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss dd-MM-yyyy", Locale.getDefault());
Calendar calendar = Calendar.getInstance();
String currentDateTimeString = df.format(calendar.getTime());

List<String> lastCall = new ArrayList<String>();

lastCall.set(0, currentDateTimeString);
lastCall.add("12:22:12 12-03-2014");
lastCall.add("22:06:34 14-07-2013");
lastCall.add("12:22:12 12-03-2012");
lastCall.add("22:06:34 14-07-2011");
lastCall.add("12:22:12 12-03-2010");

if (lastCall.size() > 5){
    lastCall.remove(6);
}

editor.putString("lastCall", new Gson().toJson(lastCall));
editor.commit();

我试图只保存最后 5 个调用,因为 .set 应该添加到第一个位置,直到获得 6 个字符串并且第 6 个被删除。

谁能告诉我哪里做错了以及我需要更改什么才能使其正常工作?

谢谢!

为什么需要用set? 据我了解,您想将 currentDateTimeString 放在 0 位置? 如果是 - 使用:

lastCall.add(0, currentDateTimeString);

set 用于替换 特定索引处的现有记录。如果您在该位置没有记录 - 它会崩溃。

好吧,我想通了,我正在将字符串添加到数组,在另一个数组中保存和读取 activity 但是在保存到数组之前我没有读取...所以我总是在重写整个数组没有得到最后的字符串..

在这种情况下,.add 是最好的。

SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss dd-MM-yyyy", Locale.getDefault());
Calendar calendar = Calendar.getInstance();
String currentDateTimeString = df.format(calendar.getTime());    

List<String> lastCall;
lastCall = new Gson().fromJson(blockerPreferences.getString("lastCall", null), new TypeToken<List<String>>() {}.getType());

lastCall.add(currentDateTimeString);

if (lastCall.size() == 6){
    lastCall.remove(0);
}

editor.putString("lastCall", new Gson().toJson(lastCall));
editor.commit();