Почему Collectors.Tomap () бросает NullPointerException при сопоставлении с нулевыми значениями? [дублировать]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему Collectors.Tomap () бросает NullPointerException при сопоставлении с нулевыми значениями? [дублировать]

Сообщение Anonymous »

Я пытаюсь преобразовать список продуктов в карту Использование потоков Java. Моя цель - собрать DTOS в карту, где ключ getId (), а значение - getLogopath (). Логопа может быть нулевым в некоторых случаях, и я в порядке с нулевыми значениями на полученной карте. < /P>
Вот соответствующий код: < /p>

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

Map result = products.stream()
.filter(pt -> pt.getId() != null)
.collect(Collectors.toMap(Products::getId, Products::getLogoPath));
< /code>
Я знаю, что это решение работает, создавая карту < /p>
Map productMap = new HashMap();
for (Products product : products) {
if (product.getId() != null) {
productMap.put(product.getId(), product.getLogoPath());
}
}
return productMap;
Мой вопрос

Почему collectors.tomap () nullpointerexception Когда некоторые значения являются нулевыми, даже если Hashmap допускает нулевые значения? /> Что я хочу:
< /p>
{
1L=someUrl,
2L=null,
3L=anotherUrl
}
< /code>

Как я могу безопасно достичь этого без ручного итерации по списку и помещения записей в карту?

Подробнее здесь: https://stackoverflow.com/questions/797 ... -null-valu
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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