2017-10-27 15 views
0

시뮬레이션 시작시 내부 데이터베이스 테이블에서 double [8760] 유형의 배열 매개 변수를 채우려고합니다. 이 테이블에는 각 매개 변수에 대한 열 hourofyear 및 열이 있습니다. 내 코드가 작동하지만, 아주 느린 데이터를 처리 :Anylogic : Array 값을 더 빠르게 입력하십시오.

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

안녕 Gregory, 잘 작동합니다. 코드를 단축해야만했습니다 : ProfileParameterA = selectFrom (data) .list (data.a) .stream(). mapToDouble (d -> d) .toArray(); 은 더 이상 for-loop가 없으므로 (내 데이터가 이미 필요한 순서대로되어 있기 때문에이 방법이 효과가 있다고 생각해보십시오.) 감사합니다. –