使用NULL作为Map中的键值

Ale*_*kov 7 java null coding-style key map

我想知道NULLMap对象中使用关键字是否被认为是好的风格,如果没有,那么它们的替代方案是什么?

Eri*_*son 8

这通常不被认为是好的风格.

由于NULL通常表示未确定或未设置的值,因此将其用作地图的键通常会令人困惑.(尽管可能存在特定情况,但有意义)

替代方案取决于具体情况,所以让我举个例子.假设我们想要文本中特定于颜色的字符串,并且我们还希望文本的默认颜色与任何字符串都不匹配.

private HashMap<String,Color> stringColors;
private Color defaultColor;
Run Code Online (Sandbox Code Playgroud)

不是在HashMap使用NULL键中存储默认颜色,而是将默认颜色放在特定变量中.这使得任何人都能清楚地看到这种颜色意味着什么.

我想说,驱动因素是,如果你实际上有一个NULL可以直接在地图中查找的值.(根据我的经验,这不常发生)在我给出的这个具体例子中,默认颜色将用于任何不在地图中的字符串.在这种情况下,没有NULL您想要颜色的字符串.