#java #string #sorting #arraylist #stringbuffer
#java #строка #сортировка #arraylist #stringbuffer
Вопрос:
У меня есть arraylist значений, которые отсортированы как в числовом, так и в алфавитном порядке. Например. в списке есть значения (в том же порядке), такие как 1, 2, 5, 10, 100, A012B, AB, XY, Z.
Я добавляю этот список в StringBuffer с помощью цикла for и возвращаю объект Stringbuffer в виде строки (через sbf.toString()
), поскольку мой метод может возвращать только строковый тип (согласно объявлению метода). Я не могу изменить возвращаемый тип (это должна быть строка, поскольку моя платформа принимает только строковый тип).
Возвращаемые значения отображаются в раскрывающемся списке. Но порядок значений меняется и отображается как 1, 10, 100, 2, 5, A012B, AB, XY, Z. Я хочу, чтобы значения отображались так же, как они присутствовали в arraylist . Вы можете помочь?
Комментарии:
1. Это невозможно.
StringBuffer
не налагает никакого специального порядка на добавленные строки. Добавленные строки выводятся по порядку. Пожалуйста, опубликуйте свой цикл.2. Это проблема кода, который заполняет элемент
dropdown
управления3. И вы могли легко убедиться сами, что это делает не StringBuffer. В свете этих комментариев я настоятельно рекомендую вам отредактировать свой заголовок, чтобы отразить реальную проблему. Если вам нужно решение.
4. спасибо за предложение. Я изменил свой заголовок
Ответ №1:
Код, который добавляет данные в раскрывающийся список, похоже, сортирует данные. Как вы создаете выпадающий список? Это Swing-приложение или веб-приложение? В некоторых веб-фреймворках выпадающие списки сортируются автоматически, и в этом случае вам нужно отключить это значение по умолчанию.
StringBuffer не сортирует строку автоматически, так что это не может быть проблемой. Чтобы проверить это, выведите содержимое StringBuffer в командную строку непосредственно перед добавлением его в список.
Комментарии:
1. Я протестировал это, и он показал правильный порядок в соответствии с моими ожиданиями (т.е. 1,2,5,10,100, A012B, AB, XY, Z). Я использую фреймворк под названием «enovia», и в нем написан этот код. Я не уверен, является ли структура «строковой» сортировкой данных обратно.
2. Я никогда не работал с ‘enovia’, поэтому не могу точно сказать, что он делает. Фреймворк должен каким-то образом разделить строку, чтобы она работала в раскрывающемся списке, так что это должно быть, когда он решит отсортировать содержимое. Есть ли у вас ссылка на документацию для используемой вами версии фреймворка?
3. нашел решение моей проблемы несколько дней назад. Проблема не в моей программе. В программе отображения фреймворка ‘enovia’ есть еще одна функция сортировки, которая повторно сортирует значения в алфавитном порядке и отображает их. Исправлена проблема. Спасибо за ваши комментарии
4. Это интересно, поэтому фреймворк принимал решение сортировать данные самостоятельно. Отлично, я рад, что вы это уловили — заставляет задуматься обо всей магии, которая происходит в фоновом режиме с этими фреймворками.
5. да, рад, что я это понял. Но это ваша идея, которая заставила меня задуматься над этими строками. Еще раз спасибо