如何有效地在SWT / Swing表中填充数百万条记录

时间:2012-07-30 06:02:36

标签: java algorithm swing swt

这是一般性问题,但我有一个特别的情况─ 我从<XYZ>硬件设备通过JNI层获取记录,它给我数百万/大量的记录并在SWT中处理所有这些记录就像在墙上弄乱你的烂摊子,它只是崩溃。

  

因此,为了高效编程,我使用了ScrollBar,我使用了UI   大小wrt滚动条,然后我填充的特定数据,   然后再次移动滚动条,再次下一组数据,但我   意识到它根本不是一种有效的方式,因为它的每一个动作   滚动条,我通过JNI层调用硬件,就是这样   非常昂贵的方式

所以现在我有一点时间考虑更新逻辑。 请给我一些有效的算法。

不会有任何分页策略,只有一个垂直的ScrollBar,直到最后一条记录

百万只是一个数字,它不是强制要有百万条记录。我只是想知道一些有效的算法来填充大量的记录

2 个答案:

答案 0 :(得分:1)

如果我没记错的话,JTable的一个'问题'是它遍及整个模型来计算列的大小。因此,即使使用滚动条,它也会在第一次绘制时循环遍历整个模型(而不仅仅是可视化部分)。

SwingX的JXTable允许在列(TableColumnExt#setPrototypeValue)上设置原型值,从而避免此循环。设置此值可以显着改善表创建时间。

答案 1 :(得分:0)

我会说你使用某种数据存储来有效地表示你的数据。取决于数据,但可以使用一组自定义对象。然后将它包装到您自己的自定义TableModel中,让Swing处理剩下的事情。未显示的数据根本不需要任何资源。