首先,讨论value为什么不能为null如果一个Map允许value为null,那么当调用map.get(key)返回null时,会出现二义性问题。可能会是:这个key不存在于map中;这个key存在于map中,并且其关联的val是null;单线程环境下可以消除二义性。在单线程环境下使用HashMap,可以通过“先判断再取值”的组合操作来避免这种二义性问题,代码实现如下所示: if (map.contains(key)) { // 该key存在于map中 Object val = map.get(key); // 从map中取出key对应的val,如果val为null,说明“这个key是存在于...