Что может быть более эффективной альтернативой, чем преобразование SortedSet в вектор в Java? - PullRequest
2 голосов
/ 31 августа 2011

Я пишу приложение для контактов в Java. Контакты отображаются в JList, который использует модель списка отсортированных TreeSet.

Я добавил поле поиска и добавил в него ключевой слушатель. С каждым введенным ключом функция подмножества модели списка используется для отображения суженного набора контактов. Я хочу, чтобы JList отображал это суженное подмножество.

Я подумываю о преобразовании SortedSet в вектор, а затем использовать метод setListData JList для отображения результатов, но я знаю, что это будет медленно и неэффективно, и это еще хуже, когда вы используете ключевой слушатель.

Итак, я хотел бы спросить, как наиболее эффективно решить эту проблему.

Спасибо за вашу помощь.

Ответы [ 3 ]

5 голосов
/ 31 августа 2011

Я бы расширил AbstractListModel и использовал бы Set / subSet непосредственно в качестве источника данных, отображаемых JList. Каждый раз, когда вы заменяете текущее подмножество на другое в модели, вызывайте fireContentsChanged, чтобы представление (JList) узнало об изменении.

Таким образом, нет необходимости конвертировать набор в вектор.

0 голосов
/ 31 августа 2011

Вам нужно будет привязать ваши данные (в любой коллекции) к вашему списку через его ListModel.

См. Раздел «Списки с динамическим содержимым» в Расширенное руководство по программированию JList .

0 голосов
/ 31 августа 2011

Если вам не нужен параллелизм, не используйте Vector, используйте ArrayList, поэтому он не синхронизируется, поэтому быстрее.

...