Значение карты равно нулю при определении PriorityQueue на основе картыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Значение карты равно нулю при определении PriorityQueue на основе карты

Сообщение Anonymous »

У меня есть следующий фрагмент кода:

Код: Выделить всё

Map map = new HashMap();
PriorityQueue pq = new PriorityQueue((a, b) -> map.get(b[1]) == map.get(a[1]) ? b[2] - a[2] : map.get(b[1]) - map.get(a[1]));
List l = new ArrayList();
public TaskManager(List tasks) {
for(List t: tasks) {
map.put(t.get(1), t.get(2));
pq.add(new int[]{t.get(0), t.get(1), t.get(2)});
}
}
Короче говоря, это приоритетная очередь, порядок элементов в которой основан на значении этих элементов в хэш-карте. Когда я запускаю этот код, я получаю следующую ошибку выполнения:

Код: Выделить всё

java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "java.util.Map.get(Object)" is null
Похоже, что приоритетная очередь не может найти ключ на карте, хотя я помещаю этот ключ на карту в строку непосредственно перед той, которая добавляет элементы в приоритетную очередь. Может кто-нибудь, пожалуйста, помогите мне понять, почему это так? Заранее спасибо!

Подробнее здесь: https://stackoverflow.com/questions/793 ... on-the-map
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»