如何在java中对ResultSet进行排序?

顺便说一句,我不能在db中做ORDER BY

将数据从ResultSet移出到您想要的任何对象表示中,然后对数据进行排序,就像在该点处的任何其他数据一样。

如果您使用Collections.Sort对复杂对象执行排序,则需要实现Comparator 。

将结果解压缩到List并使用Collections.sort() 。 如果您只需要按一个“自然”顺序排序,那么在结果类型本身中实现Comparable …否则按照排序顺序实现Comparator ,并将相关比较器的实例传递给Collections.sort()

你在DB中做ORDER BY

你应该重新评估为什么你不能这样做。 如果有人问“如何用锤子插入螺丝?我不能使用螺丝刀”,那么不说服螺丝刀在第一时间是正确的解决方案是不负责任的。

如果你真的,真的不能原生地订购结果集,那你就不走运了。 它只是来自数据库的流,因此您必须将其全部读入临时List ,对该集合进行排序,然后从那里开始。 对于较小的结果集,这可能不是一个问题,但对于较大的结果集,这可能会对效率造成很大影响。

在运行查询之前可以在数据库中对其进行排序,然后存储在resultSet中。

SELECT * FROM tableName ORDER BY columnName ASC

你想要的是这样的吗?

看起来您必须负责使用自定义对象实现ResultSet接口,该对象将为您提供您正在寻找的function….抱歉。

这可以在查询本身中解决。 您按计算列排序。 您计算的列将自然值转换为可以按数字或字母顺序排序的值。 您可以定义“转换”函数并在order by子句中调用该函数。

在某种程度上,无论是在代码中还是在数据库中,都必须进行自然到数字转换。 算法是一种算法,无论它在哪里运行。