2011-09-02 26 views
3

我正在嘗試爲每個作爲輸入的文檔創建一個新的HashMap。在pseudeocode我能想到的是這樣的:以遞歸方式創建Java中的圖集

For(eachInputDoc) 
{ 
    Map<String, String> mapInputNumber = new HashMap<String, String>; 
} 

因此,對於4號文件你會:

mapInput1 
mapInput2 
mapInput3 
mapInput4 

我怎樣才能做到這一點?

+0

嗯,使用HashMap ..你的問題究竟是什麼? – home

+0

我希望總共有4個hashmaps,或10或50,具體取決於輸入的內容。 – chrstahl89

+2

您正在尋找地圖序列。在Java中,這通常表示爲'ArrayList >',其中Sequence(ArrayList)中的每個元素表示一個文檔(HashMap),然而,稍後可能會更好地使''ArrayList '使Map不透明以那。 – 2011-09-02 18:54:01

回答

6

它看起來像你試圖動態地聲明變量。你不能在Java中這樣做 - 變量本身是在編譯時確定的。但是,您可以創建列表:

List<Map<String, String>> maps = new ArrayList<Map<String, String>>(); 
for (Document doc : docs) 
{ 
    Map<String, String> map = new HashMap<String, String>(); 
    // Populate map from doc 
    maps.add(map); 
} 
+0

我仍然無法理解這樣的泛型和代碼。順帶一提,留意Martijn。我認爲他要去的地方:) –

3

我建議你做一個ArrayList的HashMap。

0

如果你知道/要引用的文件的名稱,你甚至可以使用包含HashMap的HashMap中。

2

您不能在Java中動態生成像mapInput1mapInput2等名稱。你需要考慮數組或List。你的問題也不是遞歸的。

0

我還會有一個圖來保存mapInputs是這樣的:

Map<Integer,Map<String,String>> context = new HashMap<Integer,Map<String,String>>(); 
for each(inputDoc) 
{ 
    Map<String, String> mapInput = new HashMap<String, String>(); 
    context.put(index,mapInput); 
} 

ü具有帶表的形式給出(陣列,鏈接),而不是MAP,但是這取決於如何`重新要去的訪問inputMaps!我會說,使用ArrayList也是一個很好的!

1

我會做這樣的事情:

Map<MyDocClass, Map<String, String>> myDocData = new HashMapMap<MyDocClass, Map<String, String>>(); 
for(MyDocClass doc : myDocs) { 
    Map<String, String> data = new HashMap<String, String>(); 
    // populate the data 
    myDocData.put(doc, data); 
} 

然後你就可以很容易地通過做

Map<String, String> data = myDocData.get(doc); 
0

你需要把你的哈希映射到另一個訪問每個文檔的數據(動態)容器如ArrayList或其他HashMap。