Java:使用外部参数对数组进行排序

时间:2014-10-29 20:01:07

标签: java arrays sorting

假设我有一个函数foo,带有一些参数。在这个函数中,我生成一个Move类型的数组m。我现在需要对这个数组进行排序。好的,所以我打破了Arrays.sort(m,Comparator(){...}。但等等,我想用来比较两个动作的函数需要考虑foo的参数,而比较器的比较函数可以只接受两个类型为Move的参数!请参阅以下代码,了解我想要做的事情。

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)
}

我无法访问Game类本身,所以我不能只编辑它来解决我的问题。 Comparator类似乎无法做到这一点。有没有办法在Java中实际执行此操作?

1 个答案:

答案 0 :(得分:6)

建立自己的比较器:

public MyComparator implements Comparator<Move>
{

    private Game game;
    private int id;

    public MyComparator(Game g, int id)
    {
         this.game = g;
         this.id = id;
    }

    // compare function, using game and I'd
 }

使用它:

 Move[] m = ... ;
Arrays.sort(m, new MyComparator(aGame, and));