首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该关心no_entry_value in trove4j吗?

我应该关心no_entry_value in trove4j吗?
EN

Stack Overflow用户
提问于 2022-04-01 04:24:13
回答 1查看 35关注 0票数 0

我使用trove4j作为它的原语集合。我注意到它有类似的构造函数

代码语言:javascript
复制
public TLongArrayList( int capacity, long no_entry_value )

其中no_entry_value表示null。默认值为零。

根据我的认知,集合中的空值,就像特别设置的一样,是非常重要的。但是在我浏览了源代码之后,我发现trove4j并没有使用这个值。

所以我不知道我是否应该关心这个价值。我应该精心挑选一个永远不会出现在我的程序中的值,还是把它保留为默认的零。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-01 14:49:05

这是当你需要的时候你知道你需要的东西之一。这取决于您是否只想调用get(...),并知道该值是否在映射中而不调用containsKey(...)。这就是"no值“出现的原因,因为在没有将该键存储在地图中的情况下,返回的就是这个值。默认值为0,因此,如果您从未在映射中存储0值,这将适用于检查。但当然,这可能有点冒险。典型的值是0,-1,Integer.MAX_VALUE.像那样的事。

如果地图中没有您可以保证永远不会存在的值,那么在信任返回的值之前,您需要确保使用containsKey进行检查。您可以将执行两次查找的开销降到最低,如下所示:

代码语言:javascript
复制
int value = my_map.get( my_key );
// NOTE: Assuming no entry value of 0
if ( value == 0 && !my_map.containsKey( my_key ) ) {
   // value wasn't present
}
else {
   // value was present
}

与每次在执行containsKey之前调用get相比,这都提高了性能。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71701788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档