Как я могу отсортировать Список в алфавитном порядке?

Нет, вы не можете. Вам нужен SQL-сервер ИЛИ вы могли бы использовать какой-нибудь не-клиент-серверный движок базы данных, такой как SQLite . Вам все равно придется импортировать ваши данные.

166
задан james.garriss 27 February 2015 в 14:08
поделиться

3 ответа

Предположение, что это - Строки, использует удобный статический метод sort

 java.util.Collections.sort(listOfCountryNames)
200
ответ дан Basil Bourque 23 November 2019 в 21:01
поделиться

Используйте два аргумента в пользу Collections.sort. Вы захотите подходящее Comparator это рассматривает соответствующий случай (т.е. делает лексический, не упорядочивание UTF16), такое как это доступное через java.text.Collator.getInstance.

9
ответ дан Tom Hawtin - tackline 23 November 2019 в 21:01
поделиться

Решение с Collections.sort

Если Вы вынуждены использовать тот Список, или если Ваша программа имеет структуру как

  • Создайте список
  • Добавьте некоторые названия страны
  • отсортируйте их однажды
  • никогда не изменяйте тот список снова

затем ответ Thilos будет лучшим способом сделать это. При объединении его с советом от Tom Hawtin - tackline Вы добираетесь:

java.util.Collections.sort(listOfCountryNames, Collator.getInstance());

Решение с TreeSet

Если Вы свободны решить, и если Ваше приложение могло бы стать более сложным, то Вы могли бы изменить свой код для использования TreeSet вместо этого. Этот вид набора сортирует Ваши записи как раз в то самое время, когда они вставляются. Никакая потребность назвать вид ().

Collection<String> countryNames = 
    new TreeSet<String>(Collator.getInstance());
countryNames.add("UK");
countryNames.add("Germany");
countryNames.add("Australia");
// Tada... sorted.

Примечание стороны по тому, почему я предпочитаю TreeSet

Это имеет некоторых тонкие, но важные преимущества:

  • Это просто короче. Только одна строка короче, все же.
  • Никогда не волнуйтесь о, этот список, действительно отсортированный прямо сейчас becaude, TreeSet всегда сортируется, независимо от того, что Вы делаете.
  • У Вас не может быть дублирующихся записей. В зависимости от Вашей ситуации это может быть про или доводом "против". Если Вы нуждаетесь в дубликатах, придерживаетесь Вашего Списка.
  • Опытный программист смотрит на TreeSet<String> countyNames и немедленно знает: это - отсортированный набор Строк без дубликатов, и я могу быть уверен, что это верно в каждый момент. Такая информация в коротком объявлении.
  • Реальная победа производительности в некоторых случаях. Если Вы используете Список и вставляете значения очень часто, и список может быть прочитан между теми вставками, то необходимо отсортировать список после каждой вставки. Набор делает то же, но делает это намного быстрее.

Используя правильный набор для правильной задачи ключ к короткой записи и ошибка бесплатный код. Это не столь демонстративно в этом случае, потому что Вы просто сохраняете одну строку. Но я прекратил рассчитывать, как часто я вижу, что кто-то использует Список, когда они хотят удостовериться, что нет никаких дубликатов и затем не создают ту функциональность самих. Или еще хуже, с помощью двух Списков, когда Вам действительно нужна Карта.

Не понимайте меня превратно: Используя Collections.sort не ошибка или дефект. Но существует много случаев, когда TreeSet является намного более чистым.

139
ответ дан Lena Schimmel 23 November 2019 в 21:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: