Anylogic:更快地填充数组值

Anylogic: Fill Array values faster

我确实尝试在模拟开始时从内部数据库 table 填充类型为 double[8760] 的数组参数。此 table 包含 hourofyear 列和每个参数的列。我的代码可以正常工作,但处理数据的速度非常慢:

for (int row_counter=0;row_counter<= 8759; row_counter++) {
ProfileParameterA[row_counter] = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.uniqueResult(data.a, double.class);
ProfileParameterB[row_counter] = selectFrom(data)
.where(data.hourofyear.eq(row_counter))
.uniqueResult(data.b, double.class);    
}

关于如何改进导入以更快地将 table 的数据加载到参数中的任何建议?

非常感谢。

亨氏-S

试试这个:

ProfileParameterA = selectFrom(data)
    .where(data.hourofyear.eq(row_counter))
    .list(data.a).stream().mapToDouble( d -> d ).toArray();

ProfileParameterB = selectFrom(data)
    .where(data.hourofyear.eq(row_counter))
    .list(data.b).stream().mapToDouble( d -> d ).toArray();

它是 Java Stream API 的一部分,方便以函数式风格处理列表、数组和集合。