Очень большой JTable, RowFilter и дополнительная загрузка - PullRequest
1 голос
/ 30 января 2012

Я хотел попросить разъяснений по поводу использования RowFilter и его влияния на производительность. Я реализовал фильтр с помощью метода include (Entry), который для каждой строки просто проверяет, имеет ли соответствующее значение в модели установленный логический флаг: если да, возвращает true, иначе false.

Теперь JTable, который у меня есть, может быть довольно большим (1000000+ строк), и я не был уверен, может ли эта простая фильтрация, примененная к такому большому входному набору, быть дорогой.

Как работает отображение между отфильтрованными строками и базовыми данными? Я имею в виду, хранит ли он какие-либо дополнительные данные или просто рисует строки, которые соответствуют фильтру «на лету» ??

Большое спасибо за разъяснения.

Ответы [ 2 ]

3 голосов
/ 30 января 2012

Расширение для второй точки @ mKorbel , TableModel для очень большого набора данных может содержать List<Record>, как предлагается здесь .Список может быть отсортирован с использованием подходящего Comparator и динамически разделен с использованием метода subList().В любой момент соответствующий JTable может видеть только один такой раздел, и для изменения разделов потребуются отдельные элементы управления.

3 голосов
/ 30 января 2012

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

  1. более быстрый способ выполнения этой задачи для механизма SQL, предназначенного для поиска и фильтрации строк в самой большой таблице базы данных

  2. медленнее удерживать эти данные в HashMap, и там применяется Comparator, и JTable будет отображать только результат этого компаратора

...