Java 阵列的弱点和缺点是什么?
我想知道阵列的缺点是什么。我认为,为了确定数组是否是存储特定情况下的数据的最佳方式,或者预测执行时间,了解数组是非常有帮助的 编辑1:按照我理解的数组进行澄清:Java 阵列的弱点和缺点是什么?,java,Java,我想知道阵列的缺点是什么。我认为,为了确定数组是否是存储特定情况下的数据的最佳方式,或者预测执行时间,了解数组是非常有帮助的 编辑1:按照我理解的数组进行澄清: 不是有限的,而是固定大小的存储,用作顺序数据容器,它是可变的。一个或多个索引用于引用特定数据容器。 包含的数据必须是相同类型的,如果类型是基元 包含的数据必须是相同的数据类型或该类型的后代,如果类型是object(这是多态性),这种类型的转换是从窄到宽的转换,也称为协变转换 Java中的所有数组都是一维数组 交换元素或查找带索引的元素是
Java.util.array
中,甚至不包含基本的数组操作方法,如union和intersection。很遗憾,guava库不是标准Java的一部分自Java5以来,数组很少是存储数据的最佳方式-通用集合几乎总是优越的:
- 泛型元素(尤其是通配符)带来了类型安全性和灵活性-您不仅可以使用
,而且可以使用List
List将它们与备选方案的优点进行比较: vs.
数组列表
添加和删除元素更加方便。除了最后添加,大多数操作都和数组一样慢(和快) vs.链接列表
添加和删除元素的速度要快得多,按索引获取元素的速度非常慢 vsHashSet
更快的
、包含
和添加
操作。丢失元素顺序 vs删除
HashMap
允许您通过索引以外的方式快速访问元素。失去元素顺序。总体弱点:- 固定长度。数组的长度在初始化时声明,在初始化之后不能更改
- 数组使用
作为索引。任何数组都不能包含超过int
2^31-1个
元素
- 不能创建不可变数组
- 不能创建泛型数组
- 基本类型的数组通常比相应包装类型的集合占用的每个元素的空间要少得多。这部分是由于包装器对象的开销(取决于它们的创建方式),部分是由于JVM通常将布尔值、字节、字符和短字符2、4或8存储到数组中的机器字
- 所有类型的数组的每个数组空间开销都比集合类型小