将数据作为键存储在具有空/空值的HashMap中是一个好主意吗?

推土机

我最初写了一个,ArrayList并在其中存储了唯一的值(用户名,即Strings)。稍后,我需要使用ArrayList来搜索其中是否存在用户。那是O(n)为了搜索。

我的技术负责人希望我将其更改为a HashMap,并将用户名存储为数组中的键,并将值存储为空Strings

因此,在Java中-

hashmap.put("johndoe","");

我可以稍后运行以查看该用户是否存在-

hashmap.containsKey("johndoe"); 

是这样O(1)

我的负责人说,这是一种更有效的方法,这对我来说很有意义,但是将null / empty作为哈希表中的值并将其中的元素存储为键似乎有点过时。

我的问题是,这是一个好方法吗?效率通常优于ArrayList#contains数组搜索。有用。我担心的是,搜索后我没有看到其他人这样做。我可能在某处缺少明显的问题,但看不到。

亚诺斯

由于您具有一组唯一值,因此aSet是适当的数据结构。您可以将值放在接口HashSet的实现内Set

我的负责人说,这是一种更有效的方法,这对我来说很有意义,但是将null / empty作为哈希表中的值并将其中的元素存储为键似乎有点过时。

线索的建议是有缺陷的。Map不是正确的抽象,Set是。AMap适用于键值对。但是您没有值,只有键。

用法示例:

Set<String> users = new HashSet<>(Arrays.asList("Alice", "Bob"));

System.out.println(users.contains("Alice"));
// -> prints true

System.out.println(users.contains("Jack"));
// -> prints false

使用aMap会很尴尬,因为值的类型应该是什么?这个问题在您的用例中毫无意义,因为您只有键,而不是键值对。使用Set,您不需要问,用法是很自然的。

这是O(1)对吗?

是的,在aHashMap或a中搜索HashSet是O(1)摊销最差情况,而在aList或数组中搜索是O(n)最坏情况。


一些评论指出aHashSet是根据来实现的HashMap在那种抽象水平上很好在即将完成的任务的抽象级别上---存储唯一的用户名的集合,使用集合是自然的选择,比地图更自然。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将数组存储为字段值或将数组值存储为记录是一个好主意吗?

来自分类Dev

将加密的密码密钥存储在另一个表中是一个好主意吗?

来自分类Dev

将所有与数据库相关的方法都放在一个类中是一个好主意吗?

来自分类Dev

将所有帮助程序类合并到一个巨大的类中是一个好主意吗?

来自分类Dev

将带有标签的整个xml文件(.xml)文档存储在mongodb中是一个好主意吗?

来自分类Dev

根据DDD在域对象中具有save(),get()和delete()操作是一个好主意吗

来自分类Dev

将庞大的数据对象保存在 Redux 的单个存储中是个好主意吗?

来自分类Dev

使用ElasticSearch作为替代数据存储,同时应用程序同时更新数据库和ES(在Kafka的帮助下)。这是一个好主意吗?

来自分类Dev

片段将所有导航控件委托给Activity是一个好主意吗?

来自分类Dev

片段将所有导航控件委派给Activity是一个好主意吗?

来自分类Dev

将一个句子拆分成两个单词,并将其值存储在HashMap中作为键

来自分类Dev

将“ screen -r”放在我的.bashrc中是一个好主意吗?

来自分类Dev

临时扩展Java中的现有对象-这是一个好主意吗?

来自分类Dev

将HashMap列表检索到另一个列表中,一个键具有多个值

来自分类Dev

将mongodb集合中的文档副本存储在词典列表中,并使用此数据而不是查询数据库是否是一个好主意?

来自分类Dev

在MySQL数据库中选择php-session-id作为主键是一个好主意吗?

来自分类Dev

在MySQL数据库中选择php-session-id作为主键是一个好主意吗?

来自分类Dev

使用全局变量在Go Web应用程序中存储数据库句柄是一个好主意吗?

来自分类Dev

Kong:在kong数据存储区中存储业务逻辑和/或业务数据是个好主意吗?

来自分类Dev

在Windows注册表中存储自定义文本是一个好主意吗?

来自分类Dev

React:将子组件作为this.child存储在父构造函数中-这是一个坏主意吗?

来自分类Dev

通过将布尔值转换为数组来减小JSON大小是一个好主意吗?

来自分类Dev

为什么值类的值作为其hashCode“不是一个好主意”?

来自分类Dev

使用具有整数(索引)HashMap中作为键VS使用一个ArrayList

来自分类Dev

在Postgresql jsonb中存储外键是一个坏主意吗?

来自分类Dev

在数据库中存储用户位置和家庭地址是个好主意吗?

来自分类Dev

在 DAO 中存储验证是个好主意吗?

来自分类Dev

将聊天消息存储在mongodb集合中是个好主意吗?

来自分类Dev

包装函数的返回值是一个好主意吗?

Related 相关文章

  1. 1

    将数组存储为字段值或将数组值存储为记录是一个好主意吗?

  2. 2

    将加密的密码密钥存储在另一个表中是一个好主意吗?

  3. 3

    将所有与数据库相关的方法都放在一个类中是一个好主意吗?

  4. 4

    将所有帮助程序类合并到一个巨大的类中是一个好主意吗?

  5. 5

    将带有标签的整个xml文件(.xml)文档存储在mongodb中是一个好主意吗?

  6. 6

    根据DDD在域对象中具有save(),get()和delete()操作是一个好主意吗

  7. 7

    将庞大的数据对象保存在 Redux 的单个存储中是个好主意吗?

  8. 8

    使用ElasticSearch作为替代数据存储,同时应用程序同时更新数据库和ES(在Kafka的帮助下)。这是一个好主意吗?

  9. 9

    片段将所有导航控件委托给Activity是一个好主意吗?

  10. 10

    片段将所有导航控件委派给Activity是一个好主意吗?

  11. 11

    将一个句子拆分成两个单词,并将其值存储在HashMap中作为键

  12. 12

    将“ screen -r”放在我的.bashrc中是一个好主意吗?

  13. 13

    临时扩展Java中的现有对象-这是一个好主意吗?

  14. 14

    将HashMap列表检索到另一个列表中,一个键具有多个值

  15. 15

    将mongodb集合中的文档副本存储在词典列表中,并使用此数据而不是查询数据库是否是一个好主意?

  16. 16

    在MySQL数据库中选择php-session-id作为主键是一个好主意吗?

  17. 17

    在MySQL数据库中选择php-session-id作为主键是一个好主意吗?

  18. 18

    使用全局变量在Go Web应用程序中存储数据库句柄是一个好主意吗?

  19. 19

    Kong:在kong数据存储区中存储业务逻辑和/或业务数据是个好主意吗?

  20. 20

    在Windows注册表中存储自定义文本是一个好主意吗?

  21. 21

    React:将子组件作为this.child存储在父构造函数中-这是一个坏主意吗?

  22. 22

    通过将布尔值转换为数组来减小JSON大小是一个好主意吗?

  23. 23

    为什么值类的值作为其hashCode“不是一个好主意”?

  24. 24

    使用具有整数(索引)HashMap中作为键VS使用一个ArrayList

  25. 25

    在Postgresql jsonb中存储外键是一个坏主意吗?

  26. 26

    在数据库中存储用户位置和家庭地址是个好主意吗?

  27. 27

    在 DAO 中存储验证是个好主意吗?

  28. 28

    将聊天消息存储在mongodb集合中是个好主意吗?

  29. 29

    包装函数的返回值是一个好主意吗?

热门标签

归档