如何使用OracleCachedRowSet模型加速排序JTable



我使用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和一个公共领域)之间的比较。