Мне нужно отсортировать список строк в алфавитном порядке:
Обычный способ сделать это — использовать компаратор:
Проблема CaseInsensitiveComparator состоит в том, что «AA» равно «aa». Строки появляются в результате в соответствии с порядком добавления для тех же значений, и это неверно:
Если вы не хотите добавлять зависимость от Guava (на ответ Майкла), то этот компаратор эквивалентен:
И я думаю, что это так же легко понять и закодировать.
Последние 4 строки метода могут быть написаны более сжато следующим образом:
Первый компаратор из цепочки будет сортировать строки в соответствии с регистрозависимым порядком, а второй компаратор будет сортировать строки в соответствии с регистрозависимым порядком. Так как исключенные строки появляются в результате в алфавитном порядке:
3 corvonik [2015-12-14 07:12:00]
Я новичок в программировании/кодировании и уже несколько дней задерживался в проекте в школе. Цель состоит в том, чтобы взять массив, полный слов (каждая позиция — другое слово) и сортировать его по алфавиту. Я уже пробовал сделать некоторые исследования, но у меня возникли проблемы с некоторыми примерами, которые я нашел. Класс и драйвер (я использую настройку из двух частей, если вы это сделаете), как компилируются, так и без проблем. Проблема возникает, когда я пытаюсь использовать alphaSort из моего драйвера. Я получаю исключение нулевого указателя для строки, указанной ниже. У меня были некоторые проблемы с этими исключениями в прошлом, поэтому я уверен, что это что-то маленькое, что я пропускаю. Однако, как указано, я еще недостаточно свободно в синтаксисе java, чтобы поймать небольшую ошибку.
Я решил, что должен просто включить весь метод в случае, если моя ошибка — это что-то в начале, перед сортировкой. Что я до сих пор (я нашел это при переполнении стека):
Любая помощь будет принята с благодарностью. Пожалуйста, будьте как можно более глубокими, чтобы дать ответ (как я уже сказал, я немного новичок в java). Спасибо:)
edit: для проверки нулевых значений (которые я предполагаю, что пятна в моем списке массивов пустые), я сделал следующий метод:
цикл while никогда не прерывался раньше, мой метод завершился.
java sorting nullpointerexception alphabetical
Я хочу отсортировать строку в JAVA в алфавитном порядке, как показано ниже Буквы и строчные буквы AaBbCcDdEeFfGg. например, если я поставлю AbaC, верните мне AabC спасибо!!
3 ответов
вы можете сделать это с помощью Arrays.sort , если сначала поместить символы в массив. (Это должен быть массив Character объектов, а не char примитивы, чтобы использовать пользовательский компаратор без учета регистра.)
вы можете попытаться найти коллекций.вроде а затем попробуйте такой:-
что-то вроде этого:-
EDIT: —
для сортировки по алфавиту в строке попробуйте так: —
превратите строку в массив символов, затем сравните значения int каждого символа в сортировке.
Источник: