如何在Java中创建字符串向量数组?
我使用以下代码尝试创建一个字符串向量数组,我希望有一个3项数组,每个项都是字符串向量:如何在Java中创建字符串向量数组?,java,arrays,vector,Java,Arrays,Vector,我使用以下代码尝试创建一个字符串向量数组,我希望有一个3项数组,每个项都是字符串向量: Vector<String> Result_Vector_Array[]=new Vector<String>[3]; Vector Result_Vector_Array[]=新向量[3]; 但是NB将该行突出显示为错误(通用数组创建),这有什么不对?正确的方法是什么?我知道还有Arraylist,但它不是同步的,所以我想使用vector。您不能创建这样的数组,请执行以下操作:
Vector<String> Result_Vector_Array[]=new Vector<String>[3];
Vector Result_Vector_Array[]=新向量[3];
但是NB将该行突出显示为错误(通用数组创建),这有什么不对?正确的方法是什么?我知道还有Arraylist,但它不是同步的,所以我想使用vector。您不能创建这样的数组,请执行以下操作:
Vector<String> Result_Vector_Array[] = (Vector<String>[]) new Vector[3];
向量结果_向量_数组[]=(向量[])新向量[3];
我建议使用一种不同的方法——像这样的容器数组通常很难使用,并且无助于理解代码
PS还值得注意的是,java命名约定是
Vector<String> resultVectorArray[] = (Vector<String>[]) new Vector[3];
向量结果向量数组[]=(向量[])新向量[3];
在名称中包含类型是不常见的(我怀疑这会引起争议!),为什么不直接将其称为“结果”,让类型系统担心类型呢?使用反射,它将是:
Vector<String>[] arrayOfVectors =
(Vector<String>[]) java.lang.reflect.Array.newInstance(Vector.class, size);
java.util.Arrays.fill(arrayOfVectors, new Vector<String>());
for (Vector<String> v : arrayOfVectors) {
System.out.println(v);
}
Vector[]ArrayOfVector=
(Vector[])java.lang.reflect.Array.newInstance(Vector.class,size);
fill(ArrayOfVector,newVector());
对于(向量v:阵列向量){
系统输出打印Ln(v);
}
或者,您可以使用ArrayList,然后使用将其包装。您还可以创建:
Vector<Vector<String>> Result_Vector_Array=new Vector<Vector<String>>( );
Vector Result\u Vector\u Array=new Vector();
或者您可以用其他集合替换向量。我建议保留集合,执行以下操作
Collection<Vector<String>> resultVectorArray = new ArrayList<Vector<String>>(3);
Collection resultVectorArray=new ArrayList(3);
然后,您可以将泛型与构造函数一起使用,并实际使用相同的效果如果您想使用同步ArrayList,可以使用java.util.Collections中的方法
ArrayList<String> a1 = new ArrayList<String>();
ArrayList<String> a2= new ArrayList<String>();
ArrayList<String> a3 = new ArrayList<String>();
ArrayList<String> array[] = (ArrayList<String>[]) new ArrayList[3];
array[0]= Collections.synchronizedList(a1);
array[1]= Collections.synchronizedList(a2);
array[2]= Collections.synchronizedList(a3);
ArrayList a1=新的ArrayList();
ArrayList a2=新的ArrayList();
ArrayList a3=新的ArrayList();
ArrayList数组[]=(ArrayList[])新建ArrayList[3];
数组[0]=Collections.synchronizedList(a1);
数组[1]=Collections.synchronizedList(a2);
数组[2]=Collections.synchronizedList(a3);
由于,JVM在运行时不知道您有一个向量的字符串。它所能做的最好的事情就是创建一个“原始”向量。它不能保证所有的Vector
s实际上都包含String
s。这就是为什么您会从IDE收到警告
正如jgubby所建议的那样,解决这个问题的一种方法是将其抛出。另一种方法是将列表
放入向量
中,而不是数组
但是,更重要的是,为什么阵列只能有3个项目?创建一个包含三个字段的类来放入向量
,不是更好吗?有了三个项目,这就不需要做太多的工作了,而且您还可以为这三个元素中的每一个添加一个有用的名称,这将使您的代码更加清晰
此外,自Java 6以来,存在许多有用的新同步列表
实现,这些实现的性能可能比向量
更好,例如,或者将常规的列表
包装在一个数组中。我应该知道您将在该数组上使用多线程吗
如果不是,则不必担心同步问题
我想:
List<List<String>> listOfLists = new ArrayList<List<String>>();
List<String> firstVector = new ArrayList<String>();
firstVector.add( "one" );
firstVector.add( "two" );
listOfLists.add( firstVector );
System.out.println( listOfLists.get(0).get(0) == "one" );
System.out.println( listOfLists.get(0).get(1) == "two" );
listOfLists=newarraylist();
List firstVector=new ArrayList();
第一向量。添加(“一”);
firstVector.add(“两”);
添加(第一个向量);
System.out.println(listOfLists.get(0).get(0)=“一”);
System.out.println(listOfLists.get(0.get(1)=“2”);
打印true,true什么是字符串向量?向量不是不推荐使用吗?请改用ArrayList!!!开始改用resultVectorArray名称!!!!;)Vector未被弃用。很少有人反对,我不明白为什么。通用类型在哪里?String是一个具体的类,若我们参数化Vector,Vector也是。或者?谢谢,我使用这种方法是因为我知道数组的维数,但不知道向量中有多少个元素,向量会随着它们的移动而增长,直到工作完成,我才知道它们的大小。有更好的解决方案吗?创建一个类!是的,好主意,这为更多的事情打开了大门,谢谢!因为您无法创建一个数组作为向量结果_Vector_array[]=(Vector[])新向量[3];