我有以下代碼在棋盤遊戲中排序移動。它看起來對我來說,它可以被高度優化: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;
}
有上述更好和更有效的方式(即相交的兩個列表,並返回一個排序列表。)?
注意:該功能的目標是刪除在移動列表中找到的殺手移動(主),然後返回一個新的列表,其中殺手先移動,然後返回原始移動列表中的列表。
「殺手」究竟是什麼?你有證據表明你的代碼不是最理想的(並且與什麼相比) – 2013-03-19 14:35:22
殺手是一類具有公共屬性(稱爲主類型)的類:Move [] – 2013-03-19 14:37:27
因此,您沒有訂購整個列表?只是根據一些可以識別列表中兩種不同「類型」的條件來分割它? – 2013-03-19 14:37:31