gpt4 book ai didi

java - Vector.setSize 和 Vector.capacity 返回不同的东西

转载 作者:行者123 更新时间:2023-11-30 07:05:10 25 4
gpt4 key购买 nike

我正在尝试调整一个整数 vector 的大小,但是当我使用 setSize 时,它将 Vector 的容量设置为我没有传递给 的内容>设置大小。我假设我不了解 setSize 函数的某些内容,但我终究无法弄明白。

System.out.printf("Capacity now: %d\n", timeline.capacity());
timeline.setSize(5);
System.out.printf("Capacity now: %d\n", timeline.capacity())

这段代码返回:

Capacity now: 4
Capacity now: 8

如果重要的话,ints的原始Vector包含:0111

Vector 大小只能加倍吗?

编辑:好的,我将每个 .capacity() 设置为 .size() 并且一切正常。它与所有具有不同测试用例的 .capacity() 完美配合,所以我从来没有想过这个问题。

最佳答案

他们返回不同的东西,因为它们是不同的东西:)

Vector 既有大小:其中的项数,也有容量:用于存储项的内部数组的长度。内部数组长度可以(通常是)大于大小,因此在添加项时不需要如此频繁地重新分配数组。有一些方法可以设置和获取这两个量:

  • size() : 返回列表的当前大小(项目数)。
  • setSize(int) : 截断列表,或通过添加 null 项来增加其大小。
  • capacity() : 返回内部数组的当前大小,它可能大于列表中的项目数。
  • ensureCapacity(int) : 确保内部数组至少具有指定的长度,但不会更改列表中的项目数。
  • trimToSize() : 修剪内部数组,使其长度与项目数相同,因此不会浪费空间。

附言Vector 自 Java 1.2(1998 年发布)以来已过时,被 ArrayList 取代. Vector 的设计时代,人们认为所有此类类都是 synchronized 是个好主意。 .后来意识到这种生硬的同步效果不佳,而且很少有人需要,因此重新设计了集合框架,引入了默认没有同步的 ArrayList 类,因此速度更快。它还具有稍微简单的界面。

上面关于 Vector 的所有内容也适用于 ArrayList,除了 ArrayList 没有的 setSize 方法,但如果需要,您可以很容易地模仿它的行为。

关于java - Vector.setSize 和 Vector.capacity 返回不同的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27020959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com