I am trying to learn some generic programming with Java:
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
/**
* Created by PACKAGE_NAME on 15/11/14.
*/
public class PrintMatrix {
public static <T> void printma(ArrayList<ArrayList<T>> matrix) {
ArrayList<Integer> sizes = new ArrayList<>();
for(ArrayList<T> row : matrix) {
sizes.add(row.size());
}
Set<Integer> sizesSet = new HashSet<>(sizes);
Integer[] sizesArray = sizesSet.toArray(new Integer[0]);
Integer nCol = sizesArray[0];
Integer nRow = matrix.size();
if(sizesSet.size() > 1) {
System.err.println("This is not a matrix.");
return;
}
for(int i=0; i<nRow; i++) {
for(int j=0; j<nCol; j++) {
System.out.printf("%s\t", matrix.get(i).get(j).toString());
}
System.out.println();
}
}
public static <T> void printmb(ArrayList<T[]> matrix) {
ArrayList<Integer> sizes = new ArrayList<>();
for(T[] row : matrix) {
sizes.add(row.length);
}
Set<Integer> sizesSet = new HashSet<>(sizes);
Integer[] sizesArray = sizesSet.toArray(new Integer[0]);
Integer nCol = sizesArray[0];
Integer nRow = matrix.size();
if(sizesSet.size() > 1) {
System.err.println("This is not a matrix.");
return;
}
for(int i=0; i<nRow; i++) {
for(int j=0; j<nCol; j++) {
System.out.printf("%s\t", matrix.get(i)[j].toString());
}
System.out.println();
}
}
}