当前位置: 首页 > 面试题库 >

哪一个更快?List.contains()或Map.containsKey()

宋弘壮
2023-03-14
问题内容

我正在编写一种算法,在其中寻找一对值,这些值加在一起会导致我正在寻找另一个值。

我发现使用a Map可以从O(n²)加速我的算法。后来我意识到我并没有真正使用我包含的值,Map因此List就足够了。

我在Google上进行了幂搜索,但是在我的问题的标题中找不到这些方法的渐近运行时间的任何信息。

您能指出我应该在哪里寻找这些信息吗?


问题答案:

后来我意识到我并没有真正使用我包含的值,Map因此List就足够了。

Map不仅是键值对的列表,而且是从键到值的唯一映射。所以,当你从改变MapList,您允许重复,你以前没有。另一方面,a
Set恰好是Map没有值的a。因此,请考虑使用HashSet

至于搜索的复杂性:

list.contains是O(n),hashSet.containsO(1)和treeSet.containsO(log n)。

有关现在HashMap有效的一般信息,请使用Google的“哈希表”。对于TreeMap,Google表示“二叉树”或类似名称。维基百科在这些主题上有很好的条目。

但是要小心,避免上课Hashtable。这是现代图书馆中的考古文物。对于您的情况HashSet可能是最佳选择。



 类似资料:
  • 我有一个案例,我有一组字段要在Solr中更新。我接收到的输入是映射的形式,键是字段名,值是更新的值。我有一个疑问,在这种情况下,我应该使用curl更新doc还是solrj,在那里我必须将映射转换为solrInputDocument,然后调用add命令。第一种方法会比第二种方法更快吗?

  • 问题内容: 我正在尝试优化将数据插入MySQL的代码的一部分。我应该将INSERT链接起来以制作一个巨大的多行INSERT还是更快地使用多个单独的INSERT? 问题答案: https://dev.mysql.com/doc/refman/8.0/zh-CN/insert- optimization.html 插入行所需的时间由以下因素决定,其中数字表示近似比例: 连接:(3) 向服务器发送查询:

  • 问题内容: 我想遍历字符串中的每个字符并将字符串中的每个字符作为字符串传递给另一个函数。 要么 最终结果必须是字符串。那么有什么想法会更快或更有效吗? 问题答案: 像往常一样:没关系,但是如果您坚持花时间进行微优化,或者如果您真的想针对非常特殊的用例进行优化,请尝试以下操作:

  • 问题内容: python网页或php网页哪个更快? 有谁知道挂架(或任何其他框架)的速度与用php创建的类似网站相比如何? 我知道通过cgi提供服务的python基本网页比php慢,因为每次启动时间都长。 我喜欢使用挂架,如果它比php慢,我仍然会使用它。但是,如果挂架比php快,我也许可以最终说服我的雇主允许我将网站转换为挂架。 问题答案: 听起来您不想比较两种 语言 ,但是您想比较两种 Web

  • 问题内容: 使用哪种更好或更方便: 要么 问题答案: 您是否完全需要类型属性?如果您使用的是HTML5,则不会。否则,是的。HTML 4.01和XHTML 1.0 根据需要指定属性,而HTML5具有可选属性,默认为。HTML5现在得到了广泛的实现,因此,如果您使用HTML5doctype,则是有效且不错的选择。 至于type属性中应该包含的内容,2006年注册的MIME类型旨在替代所有主要浏览器(

  • 问题内容: 我必须在内存中保留数千个字符串才能以Java顺序访问。我应该将它们存储在数组中还是应该使用某种List? 由于数组将所有数据保存在连续的内存块中(与列表不同),使用数组存储数千个字符串会不会引起问题? 问题答案: 我建议您使用探查器来测试哪个更快。 我个人认为您应该使用列表。 我在大型代码库上工作,以前的一组开发人员到处使用数组。它使代码非常不灵活。将其大块更改为列表后,我们注意到速度