2010-12-07 4 views

ответ

2

Переместите данные из ResultSet в любое представление объекта, которое вы хотите, а затем отсортируйте данные так же, как и любые другие данные в этой точке.

Если вы используете Collections.Sort для выполнения сортировки по сложному объекту, вам необходимо реализовать Comparator.

9

экстракте результаты в List<YourResultType> и использовать Collections.sort(). Если вам нужно только сортировать в одном «естественном» порядке, тогда реализуйте Comparable<T> в самом виде результата ... иначе реализуйте Comparator<T> один раз в порядке сортировки и передайте экземпляр соответствующего компаратора в Collections.sort().

+0

ow я вернул его в rs? У меня есть много вещей, вызывающих rs, и я не могу изменить, что мне нужно rs, чтобы остаться, как есть, но отсортировано – code511788465541441 2010-12-07 17:51:33

+5

@ user521180: У вас нет. Редизайн вашего решения. Уже достаточно плохо, что вы не можете использовать базу данных для одной из заданий, которые она предназначена для ... – 2010-12-07 18:17:51

+0

Как вернуть ее в RS: вы можете использовать CachedRowSet, который реализует ResultSet. Однако получение записей вручную является немного архаичным. Тем не менее это можно сделать. – 2017-04-20 22:40:29

7

Вы делаете ORDER BY в БД.

Вы должны переоценить , почему вы не можете сделать это. Если кто-то спросил: «Как вставить винт с молотком? Я не могу использовать отвертку кстати», было бы безответственно не убеждать их, что отвертка была правильным решением в первом случае.

Если вы действительно, действительно не может заказать результирующий набор изначально, вам не повезло. Это просто поток из базы данных, поэтому вам придется прочитать все это во временный List, сортировать эту коллекцию, а затем перейти оттуда. Для небольших результирующих наборов это вряд ли будет проблемой, но для крупных это, скорее всего, наложит довольно сильный удар по эффективности.

0

Похоже, вы должны были нести ответственность за реализацию интерфейса ResultSet с помощью настраиваемого объекта, который даст вам функциональность, которую вы ищете .... извините.

0

Это может быть разрешено в самом запросе. Вы заказываете расчетный столбец. Вычисленный столбец преобразует натуральное значение в значение, которое можно сортировать в цифровом или в алфавитном порядке. Вы можете определить функцию «convert» и вызвать эту функцию в предложении order by.

На каком-то уровне естественное числовое преобразование должно происходить в коде или в базе данных. Алгоритм - это алгоритм, независимо от того, где он выполняется.

1

Его можно отсортировать в базе данных, прежде чем запускать запрос, а затем сохранить в resultSet.

SELECT * FROM tableName ORDER BY columnName ASC

ли что-то подобное, что вы хотите?

Смежные вопросы