2014-10-21 96 views
0

我在C看起來像一個很長的結構..如何爲C HashMap中轉換成Java

something c = 
{ 
    {123, {1,2,3,4,5,5}}, 
    {333, {1,2,4}}, 
    {13}, {6,3,1,2,3,4,5,6,7,7,8}} 
    // continue for 100 lines 
}; 

我需要這在Java中,我不知道任何C,但這個看起來像一個HashMap鍵是一個整數,值是一個整數數組。我嘗試了類似於

HashMap<Integer, Integer[]> something = 
{ 
    123:{1,2,3,4,5,5}, 
    333:{1,2,4}, 
    //continue for 100 lines 
} 

並且這沒有奏效。

編輯: 所以第一個數字是一個名爲startX的int,並且數組中充滿了被稱爲startY的短。該代碼不喜歡的東西

int tab = c[num]; 
int a = tab>startX; 
short b = tab>startY; 

所以在Java中,我相信這是像

int a = something.get(startX); 
int b = a[0]; 

我需要能夠遍歷數據結構,並希望我就不必手動輸入所有這些行:/

+6

C不會有什麼叫做「HashMap的」,也不是說就像一個任何數據結構。你所看到的可能是一系列結構,但除非你說出什麼是「什麼」,否則不可能說出來。 – 2014-10-21 21:41:08

+0

因此,第一個數字只是一個整數,另一個數組很短 – gallly 2014-10-21 22:02:53

+0

當前所有三個答案仍然適用,只要將Integer []更改爲Short []或short []即可。實際上,你甚至不需要使用Integer [],如果他們是int,只要int []會做。自動裝箱照顧其餘部分。 – 2014-10-21 22:09:16

回答

2

您將不得不手動將它們放入HashMap

Map<Integer, Integer[]> something = new Map<Integer, Integer[]>(); 
something.put(123, new Integer[]{1,2,3,4,5,5}); 
something.put(333, new Integer[]{1,2,4}); 
//etc 
// Get each array by using something.get() with one of the Integer keys 
something.get(123); 
2

嘗試

HashMap<Integer, Integer[]> something = new HashMap<Integer, Integer[]>(); 
something.put(123, new Integer[]{1,2,3,4,5,5}); 
something.put(333, new Integer[]{1,2,4}); 
//continue for 100 lines 

,你會得到整數數組與

Integer[] array = something.get(123); 

如果您使用的是Java 1.7或以上,你可以在HashMap的實例省略類型。

HashMap<Integer, Integer[]> something = new HashMap<>(); 
2
HashMap<Integer, Integer[]> something = new HashMap<Integer, Integer[]>() { 
    {put(123, new Integer[]{1,2,3,4,5,5});} 
    {put(333, new Integer[]{1,2,4});} 
}; 
+2

我可以誠實地說,我從來沒有在Java中看到過這種構造。但它的工作。 – 2014-10-21 22:03:28

+1

@ A.Grandt它被稱爲雙大括號初始化:http://stackoverflow.com/q/1958636/1530508 – ApproachingDarknessFish 2014-10-21 22:09:50

+0

@ValekHalfHeart謝謝。 – 2014-10-21 22:13:36