1

ぶつかったようです。minecraft bukkit サーバー用の「エコノミー」システムを作成しています。

最初に「Richest」でテーブルを注文しようとしていますが、受け取った注文が異なります。phpMyAdmin を介して SQL を実行すると、正しい順序で受信されます

ここに画像の説明を入力

ここに画像の説明を入力

public static HashMap<String, Double> topPlayers(String economyKey) {
    sql.build("SELECT b.balance, p.username FROM " + sql.prefix
            + "players p INNER JOIN " + sql.prefix + "balances b ON p.id=b.user_id WHERE economy_key=? ORDER BY b.balance DESC LIMIT 0,5");
    String[] params = { economyKey };

    ResultSet results = sql.executePreparedQuery(params);
    HashMap<String, Double> players = new HashMap<String, Double>();
    try {
        while (results.next()) {
            players.put(results.getString("username"), results.getDouble("balance"));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }

    return players;
}
4

2 に答える 2

3

注文されていない HashMap を使用しています。リストまたはその他の順序付けられたデータ構造を使用してみてください-問題が解決します。

于 2012-12-16T05:39:41.483 に答える
2

HashMap要素の順序を保証しないを使用しています。

これは、java.util.HashMapのAPIドキュメントの内容です。

このクラスは、マップの順序を保証するものではありません。特に、順序が時間の経過とともに一定に保たれることを保証するものではありません。

むしろ、キーの全順序付けをさらに提供するマップであるSortedMapインターフェースを実装する具体的なクラスを選択する必要があります。

たとえば、インターフェイスTreeMapを実装するので、aで十分です。SortedMap

于 2012-12-16T05:47:20.653 に答える