2014-10-21 101 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