如何在任何Java地图实现上测试null键?

A'B*_*A'B 3 java collections

我想确保作为参数传递给方法的Map不包含null键.人们会认为以下情况会:

if ( map.containsKey(null) ) …
Run Code Online (Sandbox Code Playgroud)

但是,如果方法传递类似a TreeMap,那么这将会破坏,根据一般的Java Map契约可以自由地拒绝使用NPE的null键.

我们是否有一种合理的方法来测试null键,同时接受任何Map实现?

Eug*_*ene 5

boolean hasAnyNull = yourMap.keySet()
      .stream()
      .anyMatch(Objects::isNull);
Run Code Online (Sandbox Code Playgroud)