Как получить доступ к отдельным значениям в строковом массиве в Hashmap? - PullRequest
1 голос
/ 20 мая 2011

Мое объявление карты выглядит следующим образом:

Map<Integer, String[]> mapVar = new HashMap<Integer, String[]>();

И я инициализировал его, сделав несколько строковых массивов и поместив их в свою карту с соответствующим целым числом.

Я бы хотелзатем перебрать все элементы в моем массиве String на карте.Я попробовал эти две возможности, но они не дают мне правильные значения:

for(int ii =0; ii < 2; ii++)
  System.out.println(((HashMap<Integer, String[]>)mapVar).values().toArray()[ii].toString());

и

mapVar.values().toString();

Я также знаю, что массив и целое число отлично вписываются в карту, япросто не знаю, как получить к ним доступ.

Спасибо

Ответы [ 4 ]

3 голосов
/ 20 мая 2011
for (String[] strings : mapVar.values()) {
  for (String str : strings) {
     System.out.println(str);
  }
}

Это напечатает все Strings во всех массивах в Map.

3 голосов
/ 20 мая 2011

Попробуйте

for (String[] value : mapvar.values()) {
   System.out.println(Arrays.toString(value));
}
1 голос
/ 20 мая 2011
for (Map.Entry<Integer, String[]> entry : mapVar.entrySet()) {
   for (String s : entry.getValue()) {
      // do whatever
   }
}
0 голосов
/ 20 мая 2011

Если вы хотите иметь доступ к всем String значениям на карте как к одной единице, а не к промежуточным массивам, я бы предложил использовать Гуава Multimap

ListMultimap<Integer, String> multimap = ArrayListMultimap.create();
// put stuff in the multimap
for (String string : multimap.values()) { ... } // all strings in the multimap

Конечно, вы также можете получить доступ к списку String s, связанных с определенным ключом:

List<String> valuesFor1 = multimap.get(1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...