2017-10-27 4 views
0

私は、シミュレーションの開始時に内部データベーステーブルからdouble [8760]型の配列パラメータを埋めようとしています。このテーブルには、各パラメータの列hourofyearと列があります。私のコードは非常に遅く、作業データを処理しているが、:Anylogic:配列の値をより速く入力する

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);  
} 

迅速なパラメータへのテーブルのデータをロードするために、インポートを改善する方法上の任意の提案を?

ありがとうございます。ハインツ-S

答えて

0

はこれを試してみてください:

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の一部です。

+0

こんにちは、グレゴリー、 、ありがとうございます。コードを短縮するだけでした: ProfileParameterA = selectFrom(data) .list(data.a).stream()。mapToDouble(d - > d).toArray(); forループが存在しないためです。 (私のデータはすでに必要な順番になっているので、これはちょうどうまくいくと思う)ありがとう! –

関連する問題