我有一个java.sql.ResultSet,调用next()来迭代元素(列)是我代码中的主要性能问题,我知道由于内存/缓存的原因,使用连续数组会更快(ArrayList是连续的,因为我只分配它一次,不会对它调用add())。
我见过各种铸造方法,但都没有奏效。我不想使用for循环来迭代元素,因为这将调用next(),这是我试图避免的。我的ResultSet中有很多元素,所以有没有办法将RS强制转换为数组或ArrayList?
不,没有其他方法。问题不在于您使用.next()
调用,问题在于数据库速度慢。您可能需要对数据库和/或jdbc连接进行一些优化,但是您需要提供更多关于实际用例的详细信息。
除了调用next()
之外,没有其他方法可以从ResultSet
检索行。
底层实现可能在您请求之前不会实现给定的行,这可能涉及网络流量。一个合理的实现会批量获取行并缓存它们,直到您请求它们,但它肯定不会一次获取所有行,除非结果集很小。