【发布时间】:2018-10-03 13:01:03
【问题描述】:
我知道java中Vector类的默认容量是10,同样ArrayList也有它的默认容量10。但是以下类的默认容量是多少:
- 矢量
- 数组列表
- 链表
- 哈希映射
- LinkedHashMap
- ConcurrentHashMap
- 哈希集
- LinkedHashSet
- 树集
或者有没有其他方法可以获取java中所有集合框架类的默认容量?
【问题讨论】:
-
不是大小,
capacity。新创建的空集合的大小为 0。对于所有提到的类,您可以查看源代码 -
被标记为过于宽泛。这可以通过研究来回答。
-
这可能因 JDK 的具体实现而异。您可以查看 OpenJDK 源代码。无论如何,你为什么想知道?在任何情况下,您的应用都不应该依赖于这个值。
-
@m0skit0 在某些非常特殊的情况下,应用程序的性能可以通过预设集合的初始大小来受益,但要正确执行此操作,您还需要了解和理解每个集合类使用的算法专门用于确定如何以及何时增加底层数据存储。
-
@jwenting 然而,这些是这些类的内部细节,将来可能会改变,或者如果您使用另一个 JDK,这就是为什么您的优化不应该依赖于任何类的内部实现。这在 OOP 范式中称为 encapsulation。
标签: java