如何在Java中创建向量数组?
所以,我想在Java中使用Vector of Integer数组。
如果我放
Vector[] matrix; matrix = new Vector[100];
我得到不能编译错误
无法创建Vector的通用数组
我应该用吗?
matrix = new Vector[100];
代替? (发出警告)
或者我应该简单地不使用向量数组并使用向量向量代替?
注意:我不想要Vector ,我想要一个Vector []来创建一个Integers矩阵而不使用Integer [] []。
Java没有任何方法可以创建参数化类型的数组而无需获取或抑制警告。 所以你能得到的最好的是:
@SuppressWarnings("unchecked") Vector[] anArray = (Vector []) new Vector [100];
如果完全避免使用数组,则可以解决此问题。 即:
Vector> list = new Vector>(100);
或者使用集合类型:
List> list = new ArrayList>(100);
Vector vector = new Vector ();
如果您尝试执行以下操作:
Vector vector = new Vector (); Vector [] vectors = {vector};
您将收到编译错误:
无法创建Vector的通用数组
但是,如果您没有指定generics类型,java将允许它,但带有警告:
Vector vector = new Vector (); Vector[] vectors = {vector};
向量由数组支持,并且将增大或缩小到足以容纳插入其中的元素的大小。 因此,您可以预先分配Vector,但不必在创建时实际指定大小。
// preallocated vector, which can hold 100 elements Vector integers = new Vector(100);
。
// default vector, which will probably grow a couple of times when adding 100 element Vector integers = new Vector();
真正的Java数组不能增长或缩小,并且它不支持从中点删除元素。 要分配数组,请使用
// allocate an array Integer[] integers = new Integer[100];
现在,如果你想拥有一个“矢量数组”那么你就可以了
// array of vectors Vector[] vectors = new Vector[100];
要创建generics数组,您必须创建非generics并转换它。 您还必须初始化数组中的所有元素,否则它们将为null。 🙁
Vector[] anArray = (Vector []) new Vector[100]; for(int i = 0; i < anArray.length; i++) anArray[i] = new Vector ();
但是,由于Vector是一个遗留类,在Java 1.2(1998)中被ArrayList取代,我将使用List作为接口,使用ArrayList进行实现。
List[] anArray = (List []) new List[100]; for(int i = 0; i < anArray.length; i++) anArray[i] = new ArrayList ();
另一种选择是使用一个包含原始int
而不是Integer
对象的集合。 如果需要,这可以提高性能。
TIntArrayList[] anArray = new TIntArrayList[100]; for(int i = 0; i < anArray.length; i++) anArray[i] = new TIntArrayList();
要避免类型转换,请考虑以下实现:
Vector[] intVectorArray; Vector[] temp = new Vector[desiredSize]; intVectorArray = temp; for(int i = 0;i(); }
新创建的intVectorArray
将inheritance通用的Vector-Array类型的temp
以提供所需的维度, for
循环将实例化您想要的数据类型。
当你准备在intVectorArray
元素上调用Integer
函数时,你将全部被设置!