2013-05-11 98 views
0

,所以我有這樣的數據結構:Java的安排3D地圖

段 - 列數 - 值

  • 「稱號」 - 1 - 美孚
  • 「稱號」 - 2 - 美孚
  • 「標題」 - 3 - 富
  • 「內容」 - 1 - 富
  • 「內容」 - 2 - 富
  • 「內容」 - 3 - 美孚

等等... <String, Intenger, String> or <Integer, Integer, String>

我實際上解析數據並將其添加到一個HashMap:

map.put(1, parser.query(job.getString("title"))); 
map.put(2, parser.query(job.getString("date"))); 
map.put(3, parser.query(job.getString("content"))); 
map.put(4, parser.query(job.getString("href"))); 

第二個參數是一個二維數組。這是列號和值。

我想要做的就是這樣的事情

for(int i = 0; i < row.size(); i++) 
{ 
    db.put(
     map.get("title").get(1), 
     map.get("content").get(1), 
     ... 
    ); 
} 

HashMap中的第二列是一個名單,但因爲get()方法返回一個對象,我不能夠寫類似的東西。處理這些數據的最佳方式是什麼?

預先感謝您!

+0

的'得到()'方法不會在Java中返回對象5+。它返回列表的泛型類型的一個實例。使用通用列表。如果你不明白我的意思,告訴我們你是如何宣佈地圖的。 – 2013-05-11 16:04:09

+0

oh gosh ...我忘了參數中的泛型類型。謝謝你,併爲我的啞巴感到難過! – Dude 2013-05-11 16:07:18

回答

1

如果您使用的是.get(),那麼第一個Map的值不能是二維數組。

沒有三維地圖,但有MapMap s。其語法是Map<String, Map<Integer, String>>。請注意,這仍然保留Map所具有的鍵值排序 - 關鍵是String,並且<Integer, String>的另一個Map

下面是一些例子語法:

Map<String, Map<Integer, String>> multiMap = new HashMap<>(); 

HashMap<Integer, String> innerMap = new HashMap<>(); 
innerMap.put(Integer.valueOf(1), "Foo"); 
multiMap.put("title", innerMap); 
System.out.println(multiMap.get("title").get(Integer.valueOf(1))); // prints Foo