У меня есть следующий код для сортировки ходов в настольной игре. Она смотрит на меня, как это может быть оптимизированная:Java быстрый способ добавления и сортировки списков
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;
}
Есть лучше и более эффективный способ выше (т.е. пересекаются два списка и возвращает отсортированный список.)?
Примечание. Целью этой функции является удаление перемещений (первичных) убийцы, найденных в списке перемещений, а затем возврат нового списка с перемещением убийцы, а затем список того, что находится в списке исходных перемещений.
'убийцы', что именно? У вас есть доказательства, чтобы предположить, что ваш код субоптимальный (и по сравнению с чем?) –
killers - это класс, который имеет общедоступное свойство (называемое первичным) типа: Move [] –
Итак, вы не заказываете весь список? Просто разделите его на основе некоторого условия, которое идентифицирует два разных типа в списке? –