NullPointerException при использовании метода put из HashMap

Следующий код дает мне NullPointerException. Проблема заключается в следующей строке:

... 
dataMap.put(nextLine[0], nextLine[6]);

Странно, что я запустил этот код без указанной выше строки, а вызов nextLine[0] и nextLine[6] работает точно так, как ожидалось, - то есть они возвращают элементы csv файла. Я объявляю и инициализирую HashMap кодом

HashMap<String, String> dataMap = null;

ранее в методе

  String[] nextLine;
  int counter=0;
  while (counter<40) {
    counter++;

    System.out.println(counter);
    nextLine = reader.readNext(); 
    // nextLine[] is an array of values from the line
    System.out.println(nextLine[0] + " - " + nextLine[6] +" - " + "etc...");
    dataMap.put(nextLine[0], nextLine[6]);
  }
  return dataMap;
}

Ответ 1

HashMap<String, String> dataMap = new HashMap<String,String>();

Ваша переменная dataMap не инициализируется в этот момент. Вы должны получить предупреждение компилятора об этом.

Ответ 2

Где инициализируется датамап? Он всегда равен нулю.

Чтобы уточнить, вы объявляете переменную и устанавливаете ее в null. Но вам нужно создать новую карту, будь то HashMap или аналогичный.

например.

datamap = new HashMap();

(оставляя в стороне дженерики и т.д.)

Ответ 3

dataMap объявляется, но не инициализируется. Его можно инициализировать с помощью

datamap = new HashMap();

Ответ 4

Ну, на этой линии есть три объекта. Если nextLine [0] и nextLine [6] не являются нулевыми, поскольку вышеописанный вызов println работает, то это оставляет dataMap. Вы делали dataMap = new HashMap(); somwehere?

Ответ 5

Um, что именно делать вы ожидаете, когда вы это сделаете?

HashMap<String, String> dataMap = null;
...
dataMap.put(...)