我试图在java中创建Vector(2d)的向量,就像多维数组一样。然后将值分配给该矩阵中的特定位置,就像我们在2D数组中使用matrix [i] [j]所做的那样 任何帮助。
我的数据在一个Vector中 向量n = [a,b,c,d,e,f,g,h]
所以我想创建2D Vector来表示 vector m =
答案 0 :(得分:0)
您可以使用以下方法创建2D矢量:
Vector<Vector<Integer>> vector2D = new Vector<Vector<Integer>>(10);
这将创建一个大小为10的Vector,它将包含具有整数(向量)值的向量。 在特定索引处设置值之前,需要创建一个整数向量并设置在行位置(在您的情况下为2)。
vector2D.add(2, new Vector<Integer>(10));
然后,您可以使用以下语法在列索引处设置值:
Vector<Integer> rowVector = vector2D.get(2);
rowVector.add(3, 5);
这里我们首先在索引2处获得整数向量(向量)。然后在整数向量(向量)中的索引3处添加值。
希望这能解释。
答案 1 :(得分:0)
无论出于何种原因,几分钟前SO 提出了您的问题。到 2021 年,您可能不会再使用 Vector
,而是使用 List
。实际上,它们都有 subList(start,end)
方法(即使在 Java 7 中链接指向的内容也是如此),因此实际上您只需按行大小的步骤循环遍历 vector/list 并使用此方法。
此外,您可能喜欢使用流,因此流收集器会为您完成此操作,而不是在单独的行中初始化结果变量:
List<Integer> vector=Arrays.asList(1,2,3,4,5,6,7,8);
int rowSize=4;
List<List<Integer>> matrix=IntStream.range(0, vector.size()/rowSize)
.mapToObj(row->vector.subList(row*rowSize, (row+1)*rowSize))
.collect(Collectors.toList());
System.out.println(matrix);
将输出[[1, 2, 3, 4], [5, 6, 7, 8]]
。
此外,由于 Vector
可以从 List
构造,毕竟您也可以这样做:
Vector<Integer> vector=new Vector<Integer>(Arrays.asList(1,2,3,4,5,6,7,8));
int rowSize=4;
Vector<Vector<Integer>> matrix=new Vector<Vector<Integer>>(
IntStream.range(0, vector.size()/rowSize)
.mapToObj(row->new Vector<Integer>(vector.subList(row*rowSize, (row+1)*rowSize)))
.collect(Collectors.toList()));
System.out.println(matrix);
当然,在后台,它们的作用与 for
循环几乎相同:
Vector<Integer> vector=new Vector<Integer>(Arrays.asList(1,2,3,4,5,6,7,8));
int rowSize=4;
Vector<Vector<Integer>> matrix=new Vector<Vector<Integer>>();
for(int row=0;row<vector.size()/rowSize;row++)
matrix.add(new Vector<Integer>(vector.subList(row*rowSize, (row+1)*rowSize)));
System.out.println(matrix);