如何解析 toMap 中的空值

How resolve null value in toMap

我有一个问题,实际上当我 select 一周内的两个时间段并通过一个按钮生成它们时一切正常,但是当我去删除一周中的一天然后再次点击单击“生成插槽”按钮,我选择了我的一周(我有两天但现在只有一天)我在第 100 行的代码中收到错误消息:

在共享的“100”行上,您基本上告诉 JDK 编译器:为列表中的每个对象创建一个映射条目:

  • 从对象中输入 getDay 的值
  • 给对象本身赋值

JDK 将其转换为:

  • 关键=object.getDay()
  • 价值=object

在您的列表中有 null 项,例如:[{obj1}, {obj2}, null, ...]

这导致 TimeSlot::getDay 在某些情况下变为 null.getDay()。如果您需要将 null 作为键,您可以将其从 TimeSlot::getDay 转换为 o -> o != null ? o.getDay() : null.

如果你不需要null作为键值,你可以在收集之前过滤它们,例如添加:.filter(Objects::nonNull).

查看 what-is-a-nullpointerexception-and-how-do-i-fix-it 了解更多信息。