在 Java 中向 HashMap 添加 null 键或值有什么用?
HashMap 允许一个空键和任意数量的空值。它有什么用呢?
HashMap allows one null key and any number of null values. What is the use of it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我不确定你在问什么,但是如果你正在寻找一个何时想要使用空键的示例,我经常在地图中使用它们来表示默认情况(即应该使用的值)如果给定的键不存在):
HashMap
专门处理 null 键(因为它无法在 null 对象上调用.hashCode()
),但 null 值不是没有什么特别的,它们像其他东西一样存储在地图中I'm not positive what you're asking, but if you're looking for an example of when one would want to use a null key, I use them often in maps to represent the default case (i.e. the value that should be used if a given key isn't present):
HashMap
handles null keys specially (since it can't call.hashCode()
on a null object), but null values aren't anything special, they're stored in the map like anything else一个例子是树木建模。如果您使用 HashMap 表示树结构,其中键是父节点,值是子节点列表,则
null
键的值将是根节点。One example would be for modeling trees. If you are using a HashMap to represent a tree structure, where the key is the parent and the value is list of children, then the values for the
null
key would be the root nodes.使用
null
values 的一个示例是使用HashMap
作为昂贵操作结果的缓存(例如调用外部Web 服务),可能会返回null
。在映射中放置
null
值可以让您区分未对给定键执行操作的情况(cache.containsKey(someKey)
返回false
),并且操作已执行但返回null
值(cache.containsKey(someKey)
返回true
,cache.get(someKey)
返回null
)。如果没有
null
值,您必须在缓存中放入一些特殊值来指示null
响应,或者根本不缓存该响应并每次都执行该操作。One example of usage for
null
values is when using aHashMap
as a cache for results of an expensive operation (such as a call to an external web service) which may returnnull
.Putting a
null
value in the map then allows you to distinguish between the case where the operation has not been performed for a given key (cache.containsKey(someKey)
returnsfalse
), and where the operation has been performed but returned anull
value (cache.containsKey(someKey)
returnstrue
,cache.get(someKey)
returnsnull
).Without
null
values, you would have to either put some special value in the cache to indicate anull
response, or simply not cache that response at all and perform the operation every time.到目前为止的答案只考虑了拥有
null
键的价值,但问题还询问了任意数量的 null 值
。在 HashMap 中针对键存储值
null
的好处与在数据库等中相同 - 您可以记录空值(例如字符串“”)和非空值之间的区别完全有值(空)。The answers so far only consider the worth of have a
null
key, but the question also asks aboutany number of null values
.The benefit of storing the value
null
against a key in a HashMap is the same as in databases, etc - you can record a distinction between having a value that is empty (e.g. string ""), and not having a value at all (null).这是我唯一设计的示例,其中
null
键可能很有用:Here's my only-somewhat-contrived example of a case where the
null
key can be useful:另一个例子:我用它按日期对数据进行分组。
但有些数据没有日期。我可以将其与标题“NoDate”分组
Another example : I use it to group Data by date.
But some data don't have date. I can group it with the header "NoDate"
当映射存储 UI 选择的数据(其中映射键代表 bean 字段)时,空键也很有用。
例如,相应的空字段值将在 UI 选择中表示为“(请选择)”。
A null key can also be helpful when the map stores data for UI selections where the map key represents a bean field.
A corresponding null field value would for example be represented as "(please select)" in the UI selection.