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