【发布时间】:2021-02-27 09:52:40
【问题描述】:
【问题讨论】:
【问题讨论】:
Java Array 对象的大小是固定的。在ArrayList 内部,有一个Array,它的大小也是固定的,但是当您向列表中添加更多项目时,ArrayList 类会自动创建一个更大的内部Array,然后将元素复制到其中.
如果您想同时拥有灵活的大小和类似数组的行为,那么ArrayList 是一个不错的选择。如果有时您想获得更大的数组,那么您基本上必须做ArrayList 所做的事情:创建一个更大的数组并复制现有元素。
总体而言,Array 对于您希望非常有效地访问固定大小的数据集的某些情况很有用。当您认为它可能会改变大小时,您应该考虑使用其他更灵活的集合类。
【讨论】:
具有固定长度的数组是语言的工作方式。
最终,诸如集合之类的所有结构都有一个(固定长度)数组,即使是 ArrayList,但如果它需要增长到超出其当前容量,它的方法会丢弃内部数组并用更大的数组替换它。
需要分配内存,为此您需要知道多少,为此您需要固定大小。
【讨论】:
在许多现代语言中,数组是静态的,而列表和/或向量是动态的,因为有时您需要静态数据结构,有时您需要动态数据结构 :)
当然有一种解决方法,但它效率很低且毫无意义,因为您可以随时使用动态数据结构。
您可以创建下一个大小的新数组,并将前一个数组中的所有数据复制到新数组中。然后将新数组设置为旧数组。
【讨论】:
数组在 Java 中是静态大小的,即使在创建时也必须给出数组大小(或初始大小)。
如果该原语跨越数组的大小,则将使用默认值初始化基元数组,而包装器/对象数组将使用其所有元素的空值初始化。
在 Java 中调整数组大小意味着手动创建所需大小的新数组,并有选择地从旧数组中添加元素。
(甚至 arraylist 也会根据其指标在后台手动调整大小)。
【讨论】:
ArrayList 是只能存储对象数据类型,是一个对象类型。数组是引用类型。 Array 不具备调整其大小的能力,但 ArrayList 类型可以做到这一点。
【讨论】: