我使用JTable的模型,在OracleCachedRowSet
实现的cachedRowSet
中保存数据。在getValueAt()
方法中,我需要使用cachedRowSet.absolute()
方法,以便将rowSet指针移动到所需的行。似乎cachedRowSet.absolute()
是非常慢的,当我排序表(使用java默认排序器)有很多行的时候,它使得排序过程很慢,它可能需要几秒钟。
是否有人有一个解决方案,如何加快排序过程(有没有办法不使用absolute()
在getValueAt()
或加速absolute()
方法)?
下面是getValueAt()
使用absloute()
方法的例子:
public Object getValueAt(int row, int col) {
try {
if (!rowSet.absolute(row + 1)) {
return null;
}
return rowSet.getObject(col + 1);
} catch (SQLException e) {
return null;
}
}
谢谢
CachedRowSet.absolute()
可能不是慢的原因,因为它是从内存加载的。根据http://java.sun.com/developer/Books/JDBCTutorial/chapter5.html, CachedRowSet
可能不是大型数据集的正确工具,但是一旦您有了CachedRecordSet
,它就是Java默认排序器负责排序。
试试釉面列表。让我们来看看这两个包(两个LGPL和一个公共领域)之间的比较。