Arraylist和Vector的加载因子?

时间:2016-10-05 10:12:40

标签: java collections

您好我试图找到数组列表和向量的加载因子,但我无法找到它。我知道HashMap和其他Map的加载因子是0.75。任何人都可以帮我找到如何检查Vector和Arraylist的加载因子。

3 个答案:

答案 0 :(得分:6)

<强>的ArrayList:

  • 初始容量:10
  • 负载系数:1(当列表已满)
  • 增长率:current_size + current_size / 2

<强>矢量:

  • 初始容量:10
  • 负载系数:1(当列表已满)
  • 增长率: current_size * 2(如果未定义capacityIncrement) current_size + capacityIncrement(如果在向量初始化期间定义了capacityIncrement)

答案 1 :(得分:1)

我假设您想知道ArrayListVector如何增加其大小。

对于ArrayList,每次将元素放入其中时,都会检查嵌套数组是否需要扩大其大小。如果是,通常,其规模将随着:

增长
newCapacity = oldCapacity + (oldCapacity >> 1);

对于某些特殊情况,例如,添加许多或大量元素,事情会有所不同。请参阅grow(int minCapacity)源代码中的java.util.ArrayList功能。

关于Vector,一般来说,它的大小会随着:

而增长
newCapacity = oldCapacity + ((capacityIncrement > 0) ?
                                         capacityIncrement : oldCapacity);

对于某些特殊情况,请参阅grow(int minCapacity)中的java.util.Vector

答案 2 :(得分:-1)

ArrayList al = new ArrayList(); for(int i = 0; i <= 10; i ++){ al.add(i + 1); } 默认容量= 10 在上面的示例中,我们要添加11个元素,因此ArrayList的新Capacity为 int newCapacity =(旧容量* 3)/ 2 + 1 (10 * 3)/ 2 + 1 = 16