如何使用ArrayList使所有元素为int x的m乘n矩阵?

时间:2019-06-13 14:34:31

标签: java matrix arraylist generic-collections

在Java中使用ArrayList使m乘n矩阵。我正在尝试构造一个具有所有元素'int x'的m x n矩阵的构造函数。

我已声明矩阵ArrayList<ArrayList<Double>> matrix = new ArrayList<>();

类名是MatrixImpl,所以我要构造的构造函数的类型是

public MatrixImpl(double x, int m, int n){..}

而且,我不能在该项目中使用2D阵列。

import java.util.ArrayList;
class MatrixImpl {
        ArrayList<ArrayList<Double>> matrix = new ArrayList<>();
        MatrixImpl(double x, int m, int n){
}

预期结果:所有元素均为'x'的m×n矩阵。

2 个答案:

答案 0 :(得分:1)

您可以创建一个临时arrayList并放置值,并将其添加到arraylist到矩阵arrayList中。对所有行重复该过程

MatrixImpl(double x, int m, int n){
ArrayList<ArrayList<Double>> matrix = new ArrayList<>();
        for( int i = 0;i<m;i++){
           ArrayList<Double> t = new ArrayList<>();
           for(int j=0;j<n;j++){
               t.add(x);
            }
            matrix.add(t);

        }

答案 1 :(得分:0)

java.util.Arrays具有一些用于原始类型的便捷填充方法。 如注释中所建议的那样,二维数组就足够了,因为您知道构造时矩阵的大小。

import java.util.Arrays;

public class MatrixImpl {

    double matrix[][];

    public MatrixImpl (double x, int m, int n)
    {
        matrix=new double[m][n];
        for (int i=0;i<m;i++)
            Arrays.fill(matrix[i],x);
    }
    public void print()
    {
        for (int i=0;i<matrix.length;i++)
        {
            for (int j=0;j<matrix[i].length;j++)
                System.out.print(" "+matrix[i][j]);
            System.out.println();
        }

    }

    public static void main(String[] args) {
        MatrixImpl mi=new MatrixImpl(5,4,3);
        mi.print();
    }

}