【问题标题】:Load factor of Arraylist and Vector?Arraylist 和 Vector 的负载因子?
【发布时间】:2016-10-05 10:12:40
【问题描述】:

您好,我试图找到数组列表和向量的负载因子,但找不到。我知道 HashMap 和其他 Map 的负载因子是 0.75。谁能帮我看看如何检查 Vector 和 Arraylist 的负载因子。

【问题讨论】:

标签: java collections


【解决方案1】:

数组列表:

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

矢量:

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

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 删除了链接,只保留了上面评论中的解释。
【解决方案2】:

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

对于ArrayList,每次你往里面放一个元素,它都会检查嵌套数组是否需要扩大它的大小。如果是,一般来说,它的大小会随着:

newCapacity = oldCapacity + (oldCapacity >> 1);

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

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

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

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

【讨论】:

  • 我也看过Array和Vector的源码。但是你确定 oldCapacity 和 capacityIncrement 有什么价值吗?
  • @Som 好吧,这取决于初始值以及有多少元素添加到嵌套数组中。 ArrayListVector 有一个单独的构造函数来指定 initialCapacity 和 capacityIncrement(仅适用于 Vector)。如果你使用非参数化的构造函数,那么值将被初始化为默认值
【解决方案3】:

ArrayList al = new ArrayList(); for(int i=0; i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 2015-03-26
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 2010-11-22
    相关资源
    最近更新 更多