函数返回空列表后.clear()

时间:2015-05-08 14:40:20

标签: java list

我正在使用NFC进行徽章项目。因此,我需要显示SQL查询中的所有值。目前我正在尝试按日对值进行排序,并将它们插入到我想要添加到另一个列表中的新列表中,该列表应包含所有日期。

public ArrayList<ArrayList<String>> sort(List<String> daten) throws SQLException, ParseException {
    int i = 0;
    int position = 0;
    long firstday= parse(daten.get(0)).getTime();
    int arraysize = daten.size();
    ArrayList<ArrayList<String>> alldays = new ArrayList<ArrayList<String>>();
    ArrayList<String> day = new ArrayList<String>();
    while (i <= arraygrösse) {
        if (parse(daten.get(position)).getTime() - firstday< 72000000) {
            day.add(daten.get(position));
            daten.remove(position);
        } else {
            alldays.add(day);
            firstday= parse(daten.get(0)).getTime();
            day.clear();
        }
        i++;
    }
    return alldays;
}

在我调用.clear()函数后,'alldays'为空([[][][]] 是否有另一个选项而不是.clear()我也试过.removeAll()但它也没有用。

3 个答案:

答案 0 :(得分:6)

而不是day.clear()试试这个:

day = new ArrayList<String>();

答案 1 :(得分:3)

当您add(day),您没有添加副本时,您需要多次添加相同的day,因此后续addclear操作会影响它。

我希望在此方法中定义dayalldays

public ArrayList<ArrayList<String>> sort(List<String> daten) throws SQLException, ParseException {
    int i = 0;
    int position = 0;

    //new local delarations
    ArrayList<ArrayList<String>> alldays = new ArrayList<ArrayList<String>>();
    ArrayList<String> day = new ArrayList<String>();

    long firstday= parse(daten.get(0)).getTime();
    int arraysize = daten.size();
    while (i <= arraygrösse) {
        if (parse(daten.get(position)).getTime() - firstday< 72000000) {
            day.add(daten.get(position));
            daten.remove(position);
        } else {
            alldays.add(day);
            firstday= parse(daten.get(0)).getTime();

            //don't clear the day, start a new day
            day = new ArrayList<String>();
        }
        i++;
    }
    return alldays;
}

答案 2 :(得分:1)

您始终将day添加到alldays。因此,如果您清除day,则应清除alldays

您需要分配新数组而不是.clear();

day = new ArrayList<String>();