порядок значений, отображаемых в раскрывающемся списке, изменяется

#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. да, рад, что я это понял. Но это ваша идея, которая заставила меня задуматься над этими строками. Еще раз спасибо