PriorityQueue<Player> playerQueue = new PriorityQueue<Player>(30,
new Comparator<Player>( ) {
// overriding the compare method
public int compare(Player i, Player j) {
return (int)i.playerPrice() < (int)j.playerPrice() ? -1 : ((int)i.playerPrice() == (int)j.playerPrice()) ? 0 : 1;
}
}
);
for(Player a:XMLParserViaSax.getListOfPlayers()){
System.out.println(a.getName()+ "-->"+a.playerPrice());
}
for(Player player:XMLParserViaSax.getListOfPlayers()){
playerQueue.add(player);
}
//playerQueue.addAll(XMLParserViaSax.getListOfPlayers());
System.out.println("**************************");
for(Player j:playerQueue){
System.out.println(j.getName()+ "-->"+j.playerPrice());
}
Player を playerprice で並べ替えようとしていますが、Player class.playerPrice() には playerprice として変数がありません。これは player.so の価格を計算するメソッドです。これらの Player オブジェクトを並べ替えようとすると、私にランダムな順序を与えます。
プレーヤー クラス内に playerprice プライベート メンバーを 1 つ持つ必要がありますか? ' Player クラスは次のようになります。
public class Player {
private String name;
private int battingStrength;
private int bowlingStrength;
private int fieldingStrength;
private int keepingStrength;
private int jerseyNumber;
public int playerStrength() {
return AuctionPlayerHelper.calculateStrength(this);
}
public boolean canKeepWickets() {
return (keepingStrength == 10);
}
public boolean isForeignPlayer(){
return AuctionPlayerHelper.isForeignPlayer(this.jerseyNumber);
}
public double playerPrice() {
return AuctionPlayerHelper.calculatePrice(this);
}
//getters,setters
}
'