1
说我有一个函数foo,带有一些参数。在这个函数中,我生成一个类型为Move的数组m。我现在需要对这个数组进行排序。好的,我打出了Arrays.sort(m,Comparator(){...}。但是等等,我想用来比较两个动作的函数需要考虑到foo的参数,但比较器的比较函数可以只需要移动类型的两个参数!见以下为我想要做的代码。Java:使用外部参数对数组进行排序
public int compare (Move m1, Move m2, Game g, int id) {
return g.evaluate(m1, g, id) - g.evaluate(m2, g, id);
}
public int foo (Game g, int id) {
Move[] m = ... ;
???
// m is now sorted by compare(move1, move2, g, id)
}
我没有进入游戏类本身,所以我不能只是编辑解决我的问题。该。比较级似乎无法做到这一点有什么办法在Java中真正做到这一点
你可以创建一个围绕游戏的包装,然后使用比较器对其进行排序。 – StackFlowed 2014-10-29 20:04:13
制作一个使用'Game'和'int'构造的MoveComparator类,并将它们存储为实例变量。然后MoveComparator可以比较它使用已经具有的'Game'和'int'传递的两个'Move'。 – 2014-10-29 20:04:59
您可以继承比较器并为其提供参数,而不是使用匿名比较器。然后在你正在做比较的实现中,你可以使用这些值。 – mkobit 2014-10-29 20:05:15