Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代DB表的行:迭代时的性能_Java_Performance_Jackcess - Fatal编程技术网

Java 迭代DB表的行:迭代时的性能

Java 迭代DB表的行:迭代时的性能,java,performance,jackcess,Java,Performance,Jackcess,我使用JackCess库()在Java下迭代Access数据库的行。 行很多,性能也不是很好,目前我使用以下代码迭代表中的所有行: private static Table VatUnitsTable; private void fun() { for (Map<String, Object> EXVAtRow : VatUnitsTable) { VatUnit vatU = new VatUnit((String)EXVAtRow.get("UUI

我使用JackCess库()在Java下迭代Access数据库的行。 行很多,性能也不是很好,目前我使用以下代码迭代表中的所有行:

private static Table VatUnitsTable;

private void fun()
{
    for (Map<String, Object> EXVAtRow : VatUnitsTable)
    {
       VatUnit vatU = new VatUnit((String)EXVAtRow.get("UUID"));
       vatU.setExtID((Integer) EXVAtRow.get("ID"));
       //bla bla working with vatU object
    }
}
私有静态表是稳定的;
私人娱乐
{
对于(映射EXVAtRow:VatUnitsTable)
{
VatUnit vatU=新VatUnit((字符串)EXVAtRow.get(“UUID”);
setExtID((整数)EXVAtRow.get(“ID”);
//bla bla使用vatU对象
}
}
我想知道当使用for(..:..)进行迭代时调用什么方法,以及是否可以在一次调用中获得所有行的arrayList,而无需迭代每一行并调用SQL方法


谢谢你

好的,找出一种更快的方法来遍历行,这似乎比我们所说的毫秒快4倍

Cursor cursor = Cursor.createCursor(VatUnitsTable;);
cursor.beforeFirst();
try
{
    while (cursor.moveToNextRow())
    {
       Map<String, Object> EXVAtRow = cursor.getCurrentRow();
       VatUnit vatU = new VatUnit((String)EXVAtRow.get("UUID"));
       vatU.setExtID((Integer) EXVAtRow.get("ID"));
       //bla bla working with vatU object
    }
 }
 catch (IOException ex)
{
    log.error(ex);
}
Cursor Cursor=Cursor.createCursor(VatUnitsTable;);
cursor.beforeFirst();
尝试
{
while(cursor.moveToNextRow())
{
Map EXVAtRow=cursor.getCurrentRow();
VatUnit vatU=新VatUnit((字符串)EXVAtRow.get(“UUID”);
setExtID((整数)EXVAtRow.get(“ID”);
//bla bla使用vatU对象
}
}
捕获(IOEX异常)
{
日志错误(ex);
}

当您为每个循环调用一个
时,它随后调用对象的
迭代器
并循环执行。所以它只创建一个迭代器一次?所以它不应该这么慢。我无法想象为什么它会更快。它本质上是与您最初发布的代码相同的代码路径(在引擎盖下)。