2012-12-23 42 views
-2

我在PHP中擁有這種結構,我不確定如何將它轉換爲Java,我需要提及的是所有的鍵和值都是字符串。如何在Java中聲明多維數組或結構

獎勵積分,請出示一個例子

private $group = array(
    "group1" = array("item1","item2"), 
    "group2" = array("item3","item4"), 
    .... 
    "groupn" = array("itemn","itemn+1"), 
    .... 
); 
+6

'獎勵積分'?我們不在這裏出售代碼。請告訴我們你試過了什麼? –

+0

查看示例http://www.java2s.com/Tutorial/Java/0140__Collections/ArrayOfstringArrays.htm –

+0

從這裏開始:http://docs.oracle.com/javase/tutorial/collections/interfaces/map。 html –

回答

1
Map<String, List<String>> group = new LinkedHashMap<String, List<String>>(); 
    group.put("group1", new ArrayList<String>(Arrays.asList("item1", "item2"))); 
    group.put("group2", new ArrayList<String>(Arrays.asList("item3", "item4"))); 

在PHP中,如果您遍歷元素在foreach

foreach ($group as $key => $subarray) 

你保證第一$關鍵是「硫基」,因爲PHP數組是隱含密鑰創建時間順序。如果你想在java中獲得相同的保證,你必須使用LinkedHashMap。否則,一個正常的HashMap是好的。

+0

謝謝,我今天學到了一些新東西 –

0
HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>(); 
ArrayList<String> list = new ArrayList<String>(); 
list.add("item1"); 
list.add("item2"); 
map.add("group1", list); 

等等......

+0

不要實例化使用'HashMap',但是'Map'!同樣,值應該是'List'而不是'ArrayList'。不要在可以使用接口的地方使用實現。 – fge

+0

我不明白爲什麼不這樣做,如果這個列表將只用於一種方法。如果你通過它遍佈整個地方,那麼是的,也許... – SMart

+0

只是因爲你應該最好使用接口,而不是具體的實現。隨着你的代碼,你被譴責使用hashmaps和arraylists。這意味着你不能使用任何其他的實現。 – fge

0

使用Map<String, Collection<String>>。如果集合中的值是唯一的,則使用Set,否則使用List

0

您可以使用Map爲您的解決方案:

Map<String, List<String>> map = new HashMap<String, List<String>>(); 
map.put("group1", Arrays.asList("item1", "item2", "item3"); 

等等

+0

映射的值應該是'List ',而不是ArrayList。 – fge

1

PHP中的數組實際上是一個有序圖。地圖是 將值與鍵關聯的類型。 Source

Java使用數組的真正定義。你想要的是一個Map