我知道Vectorjava 中类的默认容量是10,同样ArrayList也有默认容量10.但是以下类的默认容量是多少:
或者有没有其他方法来获取Java中所有集合框架类的默认容量?
Kar*_*cki 10
这里没有一个正确答案,因为它取决于Java版本.例如RFR JDK-7143928:(COLL)优化为空的ArrayList和HashMap制成ArrayList并HashMap通过默认在Java中8是空的.
您必须检查JDK中每个提到的类的默认构造函数.理论上,这也可能因JDK构建(例如Oracle,IBM,Azul ...)而异,因为默认ArrayList容量不是Java语言规范的一部分.
1. Vector = 10
2. ArrayList = 10
3. LinkedList - does not have a capacity
4. HashMap = 16 (but with the default load factor of 0.75, only 12 can be populated before a resize will happen)
5. LinkedHashMap = 16 (read above)
6. ConcurrentHashMap = 16
7. HashSet = 16 (it's based on a HashMap)
8. LinkedHashSet = 16
9. TreeSet = does not have one
Run Code Online (Sandbox Code Playgroud)
请注意,其中有些是懒惰的,并且它们在发布之间可能会发生变化。