Список сортировки Java по алфавиту со значением «Другое» в конце - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть небольшое приложение Spring Boot, которое управляет некоторыми проектами и клиентами.У клиента есть страна (которая является сущностью), и я хочу разрешить пользователю, когда он хочет создать / обновить своих клиентов, выбрать из заранее определенного списка выбора страны в пользовательском интерфейсе.Если страна отсутствует в списке, пользователь должен выбрать «Другое», пока администратор не добавит новую страну.Единственная проблема заключается в том, что это значение «Другое» должно всегда находиться в конце списка выбора, а остальные страны должны быть отсортированы в алфавитном порядке.Если я сортирую список по алфавиту, значение «Другое» будет где-то посередине.Как я могу сделать это эффективно (как Java, так и БД)?Я использую пока JPA хранилище findAll для стран.Первой идеей было добавить индекс для каждой страны и поставить «Другое» с большим значением, поэтому я буду сортировать по индексу.Но если вставка завершена .... Я не знаю, как обновить другие значения.

РЕДАКТИРОВАТЬ: Jens Schauder Solution сработало!

Ответы [ 4 ]

0 голосов
/ 04 декабря 2018

Вы можете читать из базы данных в отсортированном порядке и использовать union, чтобы добавить другие в набор результатов, если другие также присутствуют в таблице:

select * from country where name <> 'others' order by name 
union 
select * from country where name = 'others'

, если другие * не присутствует в таблице , которую вы хотите добавить вручную (в mysql)

select * from country order by name
union
select 'others';

Если вы делаете в java, почему бы просто не добавить другие к вашему list в конце, при условии, что данные прочитаны из таблицы в sorted порядке.

Надеюсь, это поможет

0 голосов
/ 04 декабря 2018

Путь Java

  • Удалить «другие» из списка (если список по умолчанию содержит «другие»)
  • Сортировать список, если требуется (можетследует избегать, если вы извлекаете данные из БД в отсортированном порядке)
  • Добавьте «прочее» в конец списка

Предполагая, что это простой строковый Arraylist

Путь к БД

Select countryname from countryTable order by  countryname union select  other from dual 

Обратите внимание, что синтаксис nd-метод будет зависеть от вашего выбора БД, но абстрактная идея остается той же

0 голосов
/ 04 декабря 2018

Я предлагаю вам добавить поле isOther в вашу таблицу / таблицу и отсортировать по двум полям / столбцам isOther, затем name.

0 голосов
/ 04 декабря 2018

Добавьте столбец заказа, сейчас я его называю sortorder.Заполните его 0 по умолчанию и 999 для особой "Другой" страны.

Затем выполните заказ по sortorder и названию страны.

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