Есть ли способ реализовать массив LinkedHashMap? - PullRequest
0 голосов
/ 09 ноября 2010

Я пытаюсь реализовать массив LinkedHashMap, но я не знаю, возможно ли это ...

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

public class LHMap {

    public static void main(String[] args) {

     LinkedHashMap<String, Integer>[] map = null;

  for (int i = 0; i < 5; i++) {
         map[i] = new LinkedHashMap<String, Integer>();
  }

  map[0].put("a", 0);
  System.out.println(map[0].get("a"));

 }
}

<code>
System.out.println(extracted(map)[0].get("a"));
возвращает «NullPointerException» ...

Есть ли у вас какие-либо идеи, как реализовать это?

РЕДАКТИРОВАТЬ: 1. erase extract (), 2. table-> array

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Я не знаю, что пытается сделать ваш extracted() метод.Вы получаете NullPointerException, потому что вы передаете map в extracted, а затем немедленно возвращаете его.В вашем примере вы передаете null, а затем возвращаете его.Вы не можете найти индекс i th (или любой индекс) в пустом массиве.

Вместо массива LinkedHashMap сработает List?

List<Map<String, Integer>> listOfMaps = new ArrayList<Map<String, Integer>>();

for(int i = 0; i < 5; i++) {
   listOfMaps.add(new LinkedHashMap<String, Integer>());
}

listOfMaps.get(0).put("a", 0);
System.out.println(listOfMaps.get(0).get("a"));

РЕДАКТИРОВАТЬ

Кстати, вы не можете создать экземпляр массива с обобщениями.Я бы предложил пойти со списком, если вы хотите безопасность типов.В противном случае вам придется обойтись:

LinkedHashMap<String, Integer>[] map = new LinkedHashMap[5];

Тем не менее, вы получите предупреждения.

0 голосов
/ 09 ноября 2010
map[i] = new LinkedHashMap<String, Integer>();

Это вызовет NPE, потому что вы никогда не инициализируете карту, или, скорее, вы явно инициализируете ее в NULL:

LinkedHashMap<String, Integer>[] map = null;

РЕДАКТИРОВАТЬ:

Вам необходимо создать экземпляр массиваНапример:

map = (LinkedHashMap<String, Integer>[]) new LinkedHashMap[5];

Хотя с этим кодом вы получите предупреждение о "непроверенной конверсии".Также проверьте this на наличие проблемы создания универсального массива (спасибо тем, кто указал на это).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...