我正在使用带有模型的JTable,该模型通过OracleCachedRowSet实现在cachedRowSet中保存数据。在getValueAt()方法中,我需要使用cachedRowSet.absolute()方法来将rowSet指针移动到所需的行。cachedRowSet.absolute()似乎非常慢,当我对有很多行的表(使用java默认排序器)进行排序时,它使排序过程变得非常慢,以至于可能需要几秒钟的时间。
有没有人有办法加快排序过程(有没有办法不在getValueAt()中使用absolute()或者加速absolute()方法)?
以下是使用absloute()方法的getValueAt()示例:
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;
}
}谢谢
发布于 2011-11-16 22:35:50
CachedRowSet.absolute()可能不是速度慢的原因,因为它是从内存加载的。根据http://java.sun.com/developer/Books/JDBCTutorial/chapter5.html的说法,CachedRowSet可能不是处理海量数据集的合适工具,但是一旦你有了自己的CachedRecordSet,负责排序的就是Java默认排序器。
用Glazed Lists试试吧。看一眼comparison between these (two LGPL and one public domain) packages。
https://stackoverflow.com/questions/8136159
复制相似问题