我有一个名为taskSubList的列表,它是由对象组成的。我需要根据iscomplete函数对任务进行排序。但是列表没有得到排序。我的代码是:
if(taskSubList.size()!=0)
{
for(int position=0;position<taskSubList.size();position++)
{
if(taskSubList.get(position).isCompleted()==1)
{
Task taskItem = taskSubList.get(position);
for (int i = position + 1; i < taskSubList.size();i++) {
Task taskItem1 = taskSubList.get(i);
taskSubList.set(i-1, taskItem1);
}
taskSubList.set(taskSubList.size()-1, taskItem);
}
}
}
最佳答案
您的排序算法中有en错误。将completed
元素移到列表的末尾时,当前元素(索引为position
)将被下一个元素(来自position+1
)替换。但是在第一次的下一个迭代中,position
会增加,因此您没有处理新元素(来自position+1
)。
例如,列表:
(1个完成)(2个完成)(3个不完整)
第一次迭代后,您将拥有:
(2个完成)(3个不完整)(1个完成)
但是下一次迭代将从元素(3 incomplete)
开始,而元素(2 completed)
将被忽略。