非常大的JTable,RowFilter和额外的负载

时间:2012-01-30 17:19:15

标签: java swing jtable comparator rowfilter

我想要求澄清RowFilter的使用及其对性能的影响。 我通过方法include(Entry)实现了一个过滤器,每行只检查模型中的对应值是否设置了布尔标志:如果是,则返回true,否则返回false。

现在,我拥有的JTable可能非常大(1000000+行),而且我不确定应用于如此大的输入集的这种简单过滤是否成本高昂。

过滤后的行与基础数据之间的映射如何正常工作?我的意思是,它是否存储任何额外的数据,或者它只是“动态”绘制与过滤器匹配的行?

非常感谢您的澄清。

2 个答案:

答案 0 :(得分:3)

任何编程语言中的任何组件都没有指定在屏幕上显示过于最大的数据矩阵,那么你有两个选择

  1. 更快的方法是让这个工作用于SQL引擎,指定用于搜索和过滤最大数据库表中的行

  2. 较慢的方法是在HashMap中保存这些数据并应用Comparator,而JTable只显示此Comparator的结果

答案 1 :(得分:3)

扩展@ mKorbel的second point,对于非常大的数据集,TableModel可能包含List<Record>,如建议的here。可以使用合适的Comparator对列表进行排序,并使用subList()方法进行动态分区。在任何时候,相应的JTable只能看到一个这样的分区,并且需要单独的控件来更改分区。