0
我有一长串Card对象。如果用户错过了一个问题,我想让同一类别的卡片移动到下一个插槽。将列表排序的方式使所有类别错开,这样每个下一个问题都会有所不同。ArrayList.add(int index,element)似乎没有移动元素
我有一个排序方法,应该在列表中的当前位置和下一个元素所需的类别中,并将该类型的元素的下一个出现移动到当前位置之后。
我没有看到这个算法的任何错误,所以我认为它可能是我使用ArrayList方法错误。但是,在查看文档后,看起来他们应该按预期工作。
我在测试列表后,它被认为是排序并没有任何移动,但列表确实包含我正在寻找的类别。
public static void sortCategoryToNext(ArrayList<Card> cardlist,String cat,int currentIndex){
boolean sorted = false;
int i = currentIndex;
int insertionpoint = i;
do {
i++;
Card nextCard = cardlist.get(i);
if(nextCard.getCategory().equals(cat)){
sorted = true;
cardlist.add(insertionpoint,nextCard);
cardlist.remove(nextCard);
}
}while(!sorted);
}
你只需要反转'add'和'remove'功能。在这里,您将删除您之前添加的卡片,因为“删除”删除了第一次出现。 – jeanr