我有以下代码在棋盘游戏中排序移动。它看起来对我来说,它可以被高度优化: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