Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java mysql十进制排序错误_Java_Mysql_Jdbc - Fatal编程技术网

Java mysql十进制排序错误

Java mysql十进制排序错误,java,mysql,jdbc,Java,Mysql,Jdbc,我好像撞到了一个肿块。我正在为minecraft bukkit服务器创建一个“经济”系统 我试着先按“最富有的人”排序,但是收到的排序是不同的。当我通过phpMyAdmin运行SQL时,它是以正确的顺序接收的 public static HashMap<String, Double> topPlayers(String economyKey) { sql.build("SELECT b.balance, p.username FROM " + sql.prefix

我好像撞到了一个肿块。我正在为minecraft bukkit服务器创建一个“经济”系统

我试着先按“最富有的人”排序,但是收到的排序是不同的。当我通过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;
}

publicstatichashmap-topPlayers(字符串economyKey){
build(“从“+sql.prefix”中选择b.balance,p.username
+“玩家p内部连接”+sql.prefix+“平衡p.id上的b=b.user\u id,其中经济性\u键=?按b排序。平衡描述限制0,5”);
字符串[]params={economyKey};
ResultSet results=sql.executePreparedQuery(params);
HashMap players=newhashmap();
试一试{
while(results.next()){
players.put(results.getString(“用户名”)、results.getDouble(“余额”);
}
}捕获(SQLE异常){
e、 printStackTrace();
}
返回球员;
}

您正在使用未排序的HashMap。尝试使用一个或任何其他有序数据结构-它会解决您的问题。

您使用的是非有序的HashMap。尝试使用或任何其他有序数据结构-它会解决您的问题。

您使用的是一个不影响元素顺序的
哈希映射

这就是API文档所说的:

该类不保证映射的顺序;特别是,它不能保证订单在一段时间内保持不变。

您应该选择一个具体的类,它实现了
SortedMap
接口,该接口是一个映射,它进一步提供了对其键的总体排序


例如,
TreeMap
就足够了,因为它实现了
SortedMap
接口

您使用的是一个不确定元素顺序的
HashMap

这就是API文档所说的:

该类不保证映射的顺序;特别是,它不能保证订单在一段时间内保持不变。

您应该选择一个具体的类,它实现了
SortedMap
接口,该接口是一个映射,它进一步提供了对其键的总体排序


例如,
TreeMap
就足够了,因为它实现了
SortedMap
接口

如果您的方法返回接口(
Map
),而不是实现(
HashMap
,其顺序不可预测),则可以轻松切换到维护插入顺序的。如果您的方法返回接口(
Map
),则可以轻松切换到维护插入顺序的而不是实现(
HashMap
,其顺序是不可预测的)。您是正确的,我从while循环中输出到控制台,它确实正确地输出了它。我假设hashmap将按照首先放入的内容进行排序。谢谢linkedhashmap也会这样做。您是对的,我从while循环中输出到控制台,它确实正确地输出了它。我假设hashmap将按照首先放入的内容进行排序。谢谢linkedhashmap也可以这样做,因为它的目的是以有序的方式检查所有项目并打印它们-不需要HashMap-一个简单的LinkedList就可以了。但是op想要玩家的名字和分数,所以我想是这样的。一个简单的字符串连接就可以了(玩家是一个LinkedList):
players.add(results.getString(“用户名”)+“”+results.getDouble(“余额”))
有一个链接的散列图可以保持顺序,因为它的目的是以有序的方式检查所有项目并打印它们-不需要散列图-一个简单的链接列表就可以了。但是op想要球员的名字和分数,所以我想。一个简单的字符串连接就可以了(球员就是链接列表):
players.add(results.getString(“username”)+“”+results.getDouble(“balance”);
有一个链接的哈希映射来保持顺序