我有两个清单; list1和list2。 list1由5个元素组成,list2由18个元素组成,list2的每个元素又由(41X41)2D数组组成。如何将list1的第一个元素与list2的所有18个元素相乘?我必须对list1的所有五个元素进行乘法运算。
我试过
List<List<Double>> Q = new ArrayList<List<Double>>();
for (int i = 0; i < list1.size(); i++){
List<Double[][]> list=new ArrayList<>(list2.size());
for (int j = 0; j < list2.size(); j++){
Double P[][] = new Double[41][41];
for (int k = 0; k < 41; k++){
for (int l = 0; l < 41; l++){
P[k][l] = list1.get(i) * list2.get(j)[k][l];
}
}
list.add(P);
}
Q.add(list);
}
有没有更好的方法来减少理解?
答案 0 :(得分:1)
如果list2的每个元素都由一个矩阵组成,那么你应该告诉Java你想要访问第一行和第一列中的元素。
double y = list1.get(0)*list2.get(0)[0][0];
答案 1 :(得分:0)
如果我理解你的问题,那么你需要将数字与数组相乘。但是这样一个操作的结果也必须是数组。
double[][] resultArray = new double[10][10];
for (int i = 0; i < 10; i++) {
for (int j = 0; i < 10; j++) {
resultArray[i][j] = list1.get(0) * list2.get(0)[i][j];
}
}
如果你想将两个数组相乘,我的意思是list1和list2的每个元素,那么它是不可能的,因为你不能将1x2数组与10x10数组相乘。为实现此目的,第一个数组中的元素数必须为10,即第一个数组中的元素(列)数必须与第二个数组中的行数相匹配。