如何将一个列表的所有元素与java中第二个列表的第一个元素相乘?

时间:2016-08-11 11:50:28

标签: java arrays list multiplying

我有两个清单; 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);
     }

有没有更好的方法来减少理解?

2 个答案:

答案 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,即第一个数组中的元素(列)数必须与第二个数组中的行数相匹配。