我有一个名为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)将被忽略。

10-07 16:50