我正在使用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()但它也没有用。
答案 0 :(得分:6)
而不是day.clear()试试这个:
day = new ArrayList<String>();
答案 1 :(得分:3)
当您add(day)
,您没有添加副本时,您需要多次添加相同的day
,因此后续add
和clear
操作会影响它。
我希望在此方法中定义day
和alldays
。
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>();