Рекурсивно создавать Hasmaps в Java - PullRequest
3 голосов
/ 02 сентября 2011

Я пытаюсь создать новый HashMap для каждого документа, который я имею в качестве входных данных. В псевдокоде я могу думать о чем-то вроде:

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

Чтобы на 4 документа у вас было:

mapInput1
mapInput2
mapInput3
mapInput4

Как мне это сделать?

Ответы [ 7 ]

6 голосов
/ 02 сентября 2011

Похоже, вы пытаетесь объявлять переменные динамически.Вы не можете сделать это в 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);
}
3 голосов
/ 02 сентября 2011

Я предлагаю вам создать ArrayList из HashMaps.

2 голосов
/ 02 сентября 2011

Вы не можете динамически генерировать имена, такие как mapInput1, mapInput2 и т. Д. В Java.Вам нужно подумать о массиве или List.Также ваша проблема не является рекурсивной.

1 голос
/ 02 сентября 2011

Я бы сделал что-то вроде этого:

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 голосов
/ 02 сентября 2011

Вам нужно поместить ваши хеш-карты в другой (динамический) контейнер, такой как ArrayList или другой HashMap.

0 голосов
/ 02 сентября 2011

У меня была бы другая карта, чтобы держать 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);
}

У вас есть подход к наличию List (массив, связанный) вместо MAP, но это зависит от того, как вы будете получать доступ к этим inputMaps! Я бы сказал, что использование ArrayList тоже хорошо!

0 голосов
/ 02 сентября 2011

Если вы знаете / хотите сослаться на название документа, вы можете даже использовать HashMap из HashMaps.

...