Android列表和数组集

时间:2015-06-05 14:28:06

标签: android arrays list 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应该添加到第1个位置,直到获得6个字符串并删除第6个字符串。

有人可以告诉我我做错了什么以及我需要改变什么才能让它发挥作用?

谢谢!

2 个答案:

答案 0 :(得分:0)

为什么需要使用套装? 据我所知,你想把 currentDateTimeString 放在0位置? 如果是这样 - 使用:

lastCall.add(0, currentDateTimeString);

设置用于替换特定索引处的现有记录。如果你在那个位置没有记录 - 它会崩溃。

答案 1 :(得分:0)

好吧我搞清楚了,我正在将字符串添加到数组中,保存并读取其他活动但是在保存到数组之前我没有阅读...所以这样我总是重写整个数组而没有获得最后一串..

在这种情况下,.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();