3 corvonik [2015-12-14 07:12:00]
Я новичок в программировании/кодировании и уже несколько дней задерживался в проекте в школе. Цель состоит в том, чтобы взять массив, полный слов (каждая позиция — другое слово) и сортировать его по алфавиту. Я уже пробовал сделать некоторые исследования, но у меня возникли проблемы с некоторыми примерами, которые я нашел. Класс и драйвер (я использую настройку из двух частей, если вы это сделаете), как компилируются, так и без проблем. Проблема возникает, когда я пытаюсь использовать alphaSort из моего драйвера. Я получаю исключение нулевого указателя для строки, указанной ниже. У меня были некоторые проблемы с этими исключениями в прошлом, поэтому я уверен, что это что-то маленькое, что я пропускаю. Однако, как указано, я еще недостаточно свободно в синтаксисе java, чтобы поймать небольшую ошибку.
Я решил, что должен просто включить весь метод в случае, если моя ошибка — это что-то в начале, перед сортировкой. Что я до сих пор (я нашел это при переполнении стека):
Любая помощь будет принята с благодарностью. Пожалуйста, будьте как можно более глубокими, чтобы дать ответ (как я уже сказал, я немного новичок в java). Спасибо:)
edit: для проверки нулевых значений (которые я предполагаю, что пятна в моем списке массивов пустые), я сделал следующий метод:
цикл while никогда не прерывался раньше, мой метод завершился.
java sorting nullpointerexception alphabetical
Собственно не понятно как сортировать строки по алфавиту
Содержание
- Закрыт по причине того, что непонятна суть вопроса участниками Anton Sorokin, L.F.C., freim, Kirill, Denis Bubnov 2 апр в 14:52 .
- 2 ответа 2
- Решение с Collections.sort
- Решение с TreeSet
- Боковое примечание о том, почему я предпочитаю TreeSet
Закрыт по причине того, что непонятна суть вопроса участниками Anton Sorokin, L.F.C., freim, Kirill, Denis Bubnov 2 апр в 14:52 .
Постарайтесь писать более развёрнутые вопросы. Для получения ответа поясните, в чём именно вы видите проблему, как её воспроизвести, что вы хотите получить в результате и т. д. Приведите пример, наглядно демонстрирующий проблему. Если вопрос можно переформулировать согласно правилам, изложенным в справке, отредактируйте его.
2 ответа 2
Если у вас список wordsList с объектами String :
Если у вас массив wordsArray с объектами String :
Если у вас строка со словами, и вы хотите отсортировать слова в строке в алфавитном порядке, то вы можете использовать способ с массивом сверху, предварительно создав массив из строки: String[] wordsArray = «Строка со словами тут находится».split(» «);
У меня есть объект List , который содержит названия стран. Как отсортировать список по алфавиту?
Предполагая, что это строки, используйте удобный статический метод sort .
Решение с Collections.sort
Если вы вынуждены использовать этот список или если ваша программа имеет структуру типа
- Создать список
- Добавить названия стран
- сортировать их один раз
- никогда не меняйте этот список снова
тогда ответ Тилоса будет лучшим способом сделать это. Если вы объедините его с советом от Tom Hawtin — tackline, вы получите:
Решение с TreeSet
Если вы можете принять решение, и если ваше приложение может стать более сложным, вы можете изменить свой код, чтобы вместо этого использовать TreeSet. Такая коллекция сортирует ваши записи только после их установки. Нет необходимости вызывать sort().
Боковое примечание о том, почему я предпочитаю TreeSet
Это имеет некоторые тонкие, но важные преимущества:
- Это просто короче. Однако только одна строка короче.
- Не беспокойтесь о том, что этот список действительно отсортирован прямо сейчас, потому что TreeSet всегда сортируется независимо от того, что вы делаете.
- У вас нет дубликатов записей. В зависимости от вашей ситуации это может быть про или con. Если вам нужны дубликаты, придерживайтесь своего списка.
- Опытный программист смотрит на TreeSet countyNames и сразу же знает: это отсортированный набор строк без дубликатов, и я могу быть уверен, что это верно в каждый момент. Так много информации в короткой декларации.
- Реальная победа в производительности в некоторых случаях. Если вы используете список и вставляете значения очень часто, и список может быть прочитан между этими вставками, вам нужно отсортировать список после каждой вставки. Набор делает то же самое, но делает это намного быстрее.
Использование правой коллекции для правильной задачи — это ключ для написания короткого кода и кода без ошибок. Это не так показательно в этом случае, потому что вы просто сохраняете одну строку. Но я перестал считать, как часто я вижу кого-то, кто пользуется списком, когда они хотят убедиться, что нет дупликов, а затем сами создайте эту функциональность. Или еще хуже, используя два списка, когда вам действительно нужна карта.
Источник: