ボードゲームで動きを並べ替えるための次のコードがあります。高度に最適化できるように見えます。
private List<Move> sortMoves(List<Move> moves, int depth)
{
List<Move> sorted = new ArrayList<Move>();
if (moves.size() == 0)
return sorted;
List<Move> primary = new ArrayList<Move>();
List<Move> rest = new ArrayList<Move>();
for(int i = 0; i < moves.size(); i++)
{
if (killers.primary[depth] != null && moves.get(i).equals(killers.primary[depth]))
primary.add(moves.get(i));
else
rest.add(moves.get(i));
}
sorted.addAll(primary);
sorted.addAll(rest);
return sorted;
}
上記へのより良い、より効率的な方法はありますか(つまり、2つのリストを交差させ、ソートされたリストを返します)?
注:この関数の目的は、移動リストで見つかったキラー移動(プライマリ)を削除してから、最初にキラー移動を含む新しいリストを返し、次に元の移動リストのリストを返すことです。