2016-08-25 3 views
0

나는 Hashmap 및 2D 배열을 사용하여 Excel을 읽었습니다.인덱스가 알려진 자바 해시 맵 및 2D 배열 성능

해시 맵 - 모든 데이터가 고유 한 문자열 키 rowno + COLNO 예제를 문자열로 변환되어 저장됩니다 : 키 (11) - ROW1의 데이터, 컬럼 1

2 차원 배열 - 모든 데이터는 문자열로 변환됩니다 저장됩니다. arr [00] = "Row1, column1의 데이터"

일단 저장됩니다. 색인을 알고있는 여러 번 그 데이터를 사용해야합니다.

ex .. 내가 1 행 3 열의 데이터를 가져 오려면 아래에서 사용합니다.

HAsmap - 문자열 값 = Hm.get ("13")

2Darray - 문자열 값 =에 도착 하나 빠르다 이때 [02]

. 거대한 수준의 데이터를 저장해야합니다.

+3

2D 배열은 조금 더 빨라야합니다. 하지만 가장 중요한 것은 첫 번째 기술이 작동하지 않는다는 것입니다. 키 123은 행 1, 열 23 또는 열 12, 열 3입니까? String을 사용하는 대신 두 개의 정수 및 올바른 equals() 및 hashCode() 메소드로 Key 클래스를 설계해야합니다. –

+0

또한 2D 배열은 arr [0] [2]에 의해 액세스됩니다. 첫 번째 행이 필요하지 않으면 arr [02]와 같은 표기법은 2 차원 배열에서 의미가 없습니다.이 경우 arr [0]을 사용할 수 있습니다. – Wallkan

+0

@JBNizet 고맙습니다. 당신은 바로 첫 번째 기술은 작동하지 않습니다. 난 2D 배열을 사용해야합니다. – Dinesh

답변

2

2 차원 배열은 데이터에 액세스하는 것이 더 빠르지 만 공간 점유도 고려해야합니다.

당신은 양방향 차원 배열이 너무 빠른 모든 셀를 저장해야하는 경우,하지만 당신은 몇 가지 세포를 저장하기 만하면 당신은지도가 최고입니다,이 경우에는 sparsed 행렬이라는 것을 사용해야합니다 솔루션은 사용 된 공간면에서 솔루션이며 성능은 비슷하므로 메모리를 적게 사용하십시오 (적은 GC).

기본적으로 다음과 같은 매트릭스

     bi dimensional array |  Map  
        Space  | Speed  |  Space | Speed 
        ------------------------------------------- 
           |   |    | 
Store all data  Best  | Best  |  Good  | Good 
Store few   Very bad | Very good*| Very good | Good 
을 가질 수 있습니다

*) 강하게 GC가 자주 발생하고 몇 가지 기록이 매우 큰 양방향 차원 매트릭스를 사용하는 경우 둔화하면 응용 프로그램의 전반적인 속도가 될 수 있음을 고려 사용하면 그렇게 할 수 있습니다.

+0

고맙습니다. 난 Array에 갈거야. – Dinesh