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

列表和集合之间的性能和内存分配比较

傅正阳
2023-03-14
问题内容

我想知道List和Set之间在性能,内存分配和可用性方面的比较。

如果我不需要在对象列表中保持唯一性,也不需要维护插入顺序,是否可以互换使用ArrayList和SortedSet /
HashSet?直接使用Collections类而不是列表/集合会好吗?

PS我也不需要列表或设置java提供的特定功能。我之所以使用列表/集而不是数组,是因为它们可以动态增长,而无需额外的编程工作。


问题答案:

如果您不关心顺序,也不删除元素,那么实际上归结为您是否需要在此数据结构中查找元素,以及查找这些对象的速度。

通过HashSetis中的值查找元素O(1)。在中ArrayList,是O(n)

如果仅使用容器存储一堆独特的对象,并在最后(以任何顺序)对它们进行迭代,那么可以说ArrayList是一个更好的选择,因为它更简单,更经济。



 类似资料:
  • 本文向大家介绍Java中列表和集合之间的区别,包括了Java中列表和集合之间的区别的使用技巧和注意事项,需要的朋友参考一下 List和Set这两个接口都属于Collection框架。这两个接口都扩展了Collection接口。它们都用于将对象集合存储为单个单元。  在jdk1.2之前,我们曾经使用Arrays,Vectors和Hashtable将对象分组为一个单元。  序号 键 列表 组 1个 位

  • valgrind一个很好用的内存和CPU分析工具,srs由于使用了st(state-threads),st是基于c函数setjmp和longjmp,valgrind不支持这两个函数,所以srs没法用valgrind分析内存错误和泄漏。 gperf是google用作内存和CPU分析的工具,基于tcmalloc(也是google内存分配库,替换glibc的malloc和free)。好消息是gperf可

  • 问题内容: 我经常听到与访问线程之间的进程内存相比,访问进程之间的共享内存段不会降低性能。换句话说,多线程应用程序不会比使用共享内存的一组进程更快(不包括锁定或其他同步问题)。 但我有疑问: 1)shmat()将本地进程虚拟内存映射到共享段。必须为每个共享内存地址执行此转换,并且转换可能会花费大量成本。在多线程应用程序中,不需要额外的转换:所有VM地址都转换为物理地址,就像在不访问共享内存的常规过

  • 事件 事件:用户与浏览器特定的交互瞬间。 内存和性能 事件处理程序为现代web浏览器提供了交互能力,但有时也不能一味地为页面添加事件处理程序,在JavaScript中,添加到页面中的事件处理程序的数量直接影响着页面整体的运行性能。添加到页面中的事件处理程序越多,那么所占用的内存也多,运行性能就会下降。而且事先指定事件处理程序面导致的DOM访问次数也会增多。对于如何利用好事件处理程序对页面运行性能的

  • 问题内容: 哪一个性能更好 或者 ? 问题答案: 两者执行相同,因为从不评估EXISTS中的SELECT子句。您可以使用以下方法进行测试: 那应该触发除以零的错误,但是不会。 我个人更喜欢使用NULL,因为很明显表中没有引用任何东西,因此其他人更容易看到。选择一个值,例如第二个示例中的INT数字1,如果不熟悉EXISTS子句,可能会导致对所发生情况的假设。

  • 问题内容: 我有一个分配大量内存的应用程序,我正在考虑使用一种比malloc更好的内存分配机制。 我的主要选择是:jemalloc和tcmalloc。使用它们中的任何一个有什么好处吗? http://locklessinc.com/benchmarks.shtml中的某些机制(包括作者的专有机制- 无锁)之间有很好的比较, 并提到了每种机制的利弊。 鉴于这两种机制都是活跃的,并且会不断完善。是否有