2013-07-18 550 views
0

我想使用HashMaps<String, V>,其中值類型V應該是二維int數組(int[][])。HashMap或帶有多維陣列的Map的Java使用

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] 

我想有訪問的唯一值,即2維陣列的鍵,所述陣列的大小是固定的array[1][3],這是不變的。鍵的數量會隨着時間而增長,但不會增加數組。例如:

Key1 -> [no1, no2, no3] 
key2 -> [no4, no5, no6] 
  1. 我想訪問數組值,現在我得到一個錯誤。
  2. 有沒有更好的實現方法?理想情況下,我希望按鍵排序。

我不是Java方面的專家,但在閱讀了一些關於地圖的書後,我覺得這對我最適合。

+4

你什麼錯誤?你是正確的方式。 –

+1

如果數組的關鍵第一維不會改變,爲什麼不使用類似這樣的東西 HashMap >? – gonzalon

+0

@GonzaloNaveira。爲什麼HashMap的值? –

回答

1

我想訪問數組值,現在我得到一個錯誤。

不確定你在這裏是什麼意思,但你似乎是在正確的軌道上。

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

理想我想它的鍵進行排序。

您可以使用TreeMap,它按照其按鍵的自然排序進行排序。

+0

感謝您的解決方案。 – user2575429

1

當我運行它時,您的代碼不會產生任何錯誤。但是,您可能會錯誤地解釋java處理數組的字符串表示形式的錯誤。

當您致電System.out.println("key ==== " + map.get("test"));它確實正確地打印數組。但是,默認情況下java會奇怪地表示數組,特別是數組(或2d數組)的數組。您可能需要將其更改爲:

//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"))); 

哪個正確打印

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

Thnx ValekHalfHeart,你是對的,它不工作,我不是java的專家,所以我不知道這一點。 – user2575429

+0

@ user2575429如果解決了您的問題,您可以接受該答案。 – ApproachingDarknessFish

+0

請不要介意,我接受了其他答案因爲我想訪問的元素。但是你的技術幫助我處理其他情況。 – user2575429