如何在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函数时,你将全部被设置!