2011-01-28 1 views
0

저는 산업 시뮬레이터에서 산출 된 데이터 파일을 분석하여이를 계산하는 소프트웨어 인턴입니다.Java로 대량 수치 데이터를 효과적으로 저장하는 방법은 무엇입니까? 내 솔루션을 비판 해주세요.

파일의 기본 구조는 다음과 같다 :

속성 1

타임 스텝 1 0.000 3.141 5.131 등 ...

타임 스텝 2 3.323 0.000 등 ...

등등 ...

데이터를 일종의 데이터 구조로 수집해야합니다. 효율적인 계산이 가능합니다. 많은 것은 동일한 가치이지만 몇 백만 개의 데이터 포인트가있을 수 있습니다.

내 솔루션 (중첩 된 HashMaps을이) :

주요 목적, DataContainer 키와 같은 속성 이름을 포함하는 HashMap에 있습니다. 이러한 키는 시간 소인 수를 키로 포함하는 자체 HashMap과 연관됩니다. 이러한 키는 데이터 값을 시간 단계 내에서 발생하는 횟수와 쌍을 이루는 키로 포함하는 자체 HashMaps와 연결됩니다.

빠른 그림 :

DataContainer 속성 :

property 1 : 
       time 1 - 0.000, 4 | 3.313, 10 etc... 
       time 2 

사람들의 입력을 기대하겠습니다.

+0

어떤 유형의 계산을 원하십니까? –

+0

간단한 물건, 특정 값 범위 내의 셀 수를 찾는 것과 같습니다. – user593323

답변

0

효율성에 관심이있는 경우 특성에 대한 특성/getters/setter를 사용하여 사용자 정의 클래스를 만드는 것이 좋습니다. HashMaps을 등 포함

HashMaps을 :

  • 더 많은 공간을 차지은
  • 가 느린,
  • 는 예측 가능한 순서로 요소를 반복 할 특히 ... 사용하기 더 까다하고,
  • 은 Java의 내장 컴파일 시간 유형 안정성의 이점을 무효화합니다.
0

내 생각 :

class DataContainer{ 
    TreeMap timestamp<String, SortedList<Integer>>; 

} 
0

내가 double[] value; int[] count; 같은 같은 길이의 두 배열 갈 것입니다. 이것은 확실하게 boxed 값으로 채워진 Map.Entry보다 훨씬 적은 공간을 차지합니다. 나는 그들 주위에 간단한 수업을 만들어지도에 넣을거야.

관련 문제