package myArray;

import java.util.ArrayList;
import java.util.List;

class Matrix<T> {
	int rows;
	int cols;
	List<List<T>> data;

	public Matrix(int rows,int cols, T init) {
		this.rows=rows;
		this.cols=cols;
		data = new ArrayList<List<T>>(rows);
		for(int r=0;r<rows;r++) {
			List<T> row = new ArrayList<T>(cols);
			for(int c=0;c<cols;c++) {
				row.add(init);
			}
			data.add(row);
		}
	}

	public void set(int r,int c, T value) { data.get(r).set(c,value); }
	public T get(int r,int c) { return data.get(r).get(c); }
	public List<T> getRow(int r) { return data.get(r); }
	public List<T> getCol(int c) {
		List<T> col = new ArrayList<T>(rows);
		for(int r=0;r<rows; r++) col.set(r,data.get(r).get(c));
		return col;
	}

	public String[] toStringArray() {
		String[] strArr = new String[rows];
		for(int r=0;r<rows;r++) {
			strArr[r] = "[ ";
			for(int c=0;c<cols;c++) {
				strArr[r]+= data.get(r).get(c).toString() + " ";
				if (c<cols-1) strArr[r] += ", ";
			}
			strArr[r] +="]";
		}
		return strArr;
	}

	static public void main(String[] args) {
		Matrix<Integer> m = new Matrix<Integer>(3,2,5);
		m.set(2,0,6);
		m.set(2,1,7);
		for (String row : m.toStringArray()) System.out.println(row);
	}
}


