私は長いリストのCardオブジェクトを持っています。ユーザーが1つの質問を逃した場合は、同じカテゴリのカードを次のスロットに移動してほしい。来るべきリストは、すべてのカテゴリーをずらして並べ替えているので、次の質問はすべて違います。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'関数を逆にするだけです。ここでは、前に追加したカードを削除します。これは、 'remove'が最初のオカレンスを削除するためです。 – jeanr