我一直在寻找很多包含Java数据结构空间复杂度信息的网站。我正在寻找HashMap
,ArrayList
,Stack
和LinkedList
的空间复杂性。我发现一个站点接近并且只有Stack和LinkedList的信息是:http://bigocheatsheet.com/,但它只有最坏的情况。任何人都知道任何其他有HashMap或ArrayList空间复杂性信息的来源,最好是平均情况和最坏情况?Java数据结构的空间复杂度
回答
在正常情况下,它们都是空间使用的O(N)
。 (等等都是标准的收集数据的结构,我想......)
当然,这并不能告诉你这些数据结构将有多少空间在实践中使用一些重要的事实。例如:
的
ArrayList
或HashMap
航天使用率不成正比的列表大小。它们的一些或全部空间利用率的策略都是“满员时的两倍”策略。在最好的情况下,
ArrayList
使用每元件更少的空间比一个LinkedList
和LinkedList
使用每元件比HashMap
更少的空间。
依此类推。
也很困难,因为有一定的使用模式,可以导致空ArrayList
或HashMap
占用大量的空间来量化最坏的情况下...。对于这些数据结构,空间使用率可以正比于最大N
值(迄今为止)而不是当前N
值。
当删除元素时,
ArrayList
不会“返回”空间。随着
HashMap
链占用的空间可以增长和缩小,但散列数组只增长。
@greybeard - 它将有总共有N个节点的树。所有树节点都直接指向树的唯一元素......内部和叶节点之间没有区别。注意:我们没有考虑用于存储元素(或键)的空间,因为对于所有基于'Collection'的数据结构来说,这是相同的。 –
Ooops ...没有TreeMap是空间中的O(N)。纠正这一点。谢谢。 –
我觉得在移除点之后关于'HashMap'的警告字。用'ArrayList',有'trimToSize()'。 – greybeard
如果您检查这些类的代码,你可以看到,他们在内部表示为数组。因此,操作的复杂性应该与阵列上的相似。
- 1. 初始化指针数据结构的空间复杂度
- 2. Java中的复杂数据结构
- 3. 时间数据结构的复杂性
- 4. 复制数据结构和空间复杂性
- 5. 时间复杂度和空间复杂度,如何计算空间复杂度
- 6. 计算函数的空间复杂度和时间复杂度
- 7. 我应该选择高时间复杂度数据结构还是高空间复杂度数据结构以获得有效的方法?
- 8. Java - 变量的空间复杂度
- 9. 数据结构树复杂
- 10. MongoDB:构建复杂的数据结构
- 11. 输入构造函数构成空间复杂度吗?
- 12. 空间复杂度混淆
- 13. 在Java中复制复杂的数据结构
- 14. 时间复杂度(Java,Quicksort)
- 15. Medians空间复杂度中位数
- 16. Redis中的复杂数据结构
- 17. solr - 复杂的数据结构
- 18. numpy复杂的数据结构
- 19. Perl中复杂的数据结构
- 20. 隐藏复杂的微数据结构
- 21. 复杂的数据结构Redis
- 22. 查询的O(log n)复杂度的数据结构
- 23. (有点)复杂的数据库结构与简单 - 空字段
- 24. 复杂的数据结构:简洁VS透明度
- 25. 查找给定java代码的时间和空间复杂度
- 26. 结构复杂
- 27. 空间数据的数据结构
- 28. 在使用Java流的复杂数据结构中搜索
- 29. 数据结构之间的复杂性比较
- 30. 递归算法的空间复杂度
我不明白你的问题。空间或时间复杂性被附加到像搜索元素这样的操作上。没有Hashmap的空间复杂性。 – Lokesh
http://java-performance.info/memory-consumption-of-java-data-types-1/可能值得一看 – mikyra
正确的错字标题。将网址转换为可点击的链接。使用实际的类名称来引用数据结构。一些小的语法修复。 –