集合框架类的默认容量是多少?

Sud*_*jha 7 java

我知道Vectorjava 中类的默认容量是10,同样ArrayList也有默认容量10.但是以下类的默认容量是多少:

  1. 向量
  2. 数组列表
  3. 链表
  4. HashMap中
  5. LinkedHashMap的
  6. 的ConcurrentHashMap
  7. HashSet的
  8. LinkedHashSet
  9. TreeSet中

或者有没有其他方法来获取Java中所有集合框架类的默认容量?

Kar*_*cki 10

这里没有一个正确答案,因为它取决于Java版本.例如RFR JDK-7143928:(COLL)优化为空的ArrayList和HashMap制成ArrayListHashMap通过默认在Java中8是空的.

您必须检查JDK中每个提到的类的默认构造函数.理论上,这也可能因JDK构建(例如Oracle,IBM,Azul ...)而异,因为默认ArrayList容量不是Java语言规范的一部分.


Eug*_*ene 5

 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)

请注意,其中有些是懒惰的,并且它们在发布之间可能会发生变化。