Как я могу отсортировать ResultSet в Java? - PullRequest
1 голос
/ 07 декабря 2010

Кстати, я не могу сделать ORDER BY в БД

Ответы [ 6 ]

9 голосов
/ 07 декабря 2010

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

8 голосов
/ 07 декабря 2010

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

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

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

2 голосов
/ 07 декабря 2010

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

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

1 голос
/ 03 марта 2014

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

SELECT * FROM tableName ORDER BY columnName ASC

Это то, что вы хотите?

0 голосов
/ 07 декабря 2010

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

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

0 голосов
/ 07 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...