2013-07-18 5 views
0

와지도.자바의 HashMap의 사용 또는 다차원 배열

Map<String,int[][]> map = new HashMap<>(); 
int[][] a = new int[][]{ {1, 2} }; 
map.put("test", a); 
System.out.println("Test:" + map.containsKey("test")); // Test: true 
System.out.println("key ==== " + map.get("test"));  // Key === [[[email protected] 

I는 즉, 2 차원 어레이의 고유 값에 액세스 키를 가질 것을 시도하고, 어레이의 크기는이 일정한, array[1][3] 고정된다. 키의 수는 시간과 함께 증가하지만 배열은 증가하지 않습니다. 예를 들어 :

Key1 -> [no1, no2, no3] 
key2 -> [no4, no5, no6] 
  1. 나는 지금은 오류가 발생, 배열 값에 액세스하고 싶습니다.
  2. 더 나은 구현 방법이 있습니까? 이상적으로는 키별로 정렬하고 싶습니다.

저는 Java의 전문가는 아니지만지도에 대한 정보를 읽은 후에는 저에게 가장 적합하다고 느꼈습니다.

+4

무슨 에러가 발생합니까를 인쇄

//at top of file import java.util.Arrays; //deepToString returns a string that expresses nested arrays in a user-friendly format System.out.println("key ==== " + Arrays.deepToString(map.get("test"))); 

: 당신은이를 변경할 수 있습니다? 당신은 올바른 방법으로 동성애입니다. –

+1

배열의 주요 첫 번째 차원이 변경되지 않는 이유는 무엇입니까? HashMap >? – gonzalon

+0

@GonzaloNaveira. 왜 값을위한 HashMap인가? –

답변

1

배열 값에 액세스하고 싶습니다. 오류가 발생합니다.

여기에 무슨 의미가 있는지 확실하지 않지만 올바른 길을 걷고있는 것 같습니다.

 
2 

System.out.println(map.get("test")[0][1]); 

이상적으로 나는 그것이 키에 의해 정렬하고 싶습니다.

TreeMap을 사용할 수 있습니다.이 키는 자연 순서에 따라 정렬됩니다.

+0

Thanx 솔루션이 도움이되었습니다. – user2575429

1

코드를 실행해도 오류가 발생하지 않습니다. 그러나 배열의 문자열 표현을 오류로 처리하는 Java의 방식을 오해 할 수도 있습니다.

System.out.println("key ==== " + map.get("test"));으로 전화를 걸면 올바르게 인쇄됩니다. 그러나 기본적으로 java는 배열을 이상하게 표현합니다. 특히 배열 (또는 2 차원 배열)의 배열이 좋습니다. 제대로

Test:true 
key ==== [[1, 2]] 
+0

Thnx ValekHalfHeart, 당신이 맞습니다, 나는 자바의 전문가가 아니기 때문에 이것을 모르고있었습니다. – user2575429

+0

@ user2575429 문제가 해결되면 대답을 수락 할 수 있습니다. – ApproachingDarknessFish

+0

제발 마음에 들지 마라, 나는 엘리먼트에 액세스하고 싶었던 다른 대답을 받아 들였다. 그러나 당신의 기술은 다른 경우에 도움이되었습니다. – user2575429