public class CompressMatrix { static int row_capacity = 1000; static int column_capacity = 1000; // Default constructor. Sets aside enough capacity for one vertex public sparseMatrix[] compress(double Input[][]) { sparseMatrix[] returnList = new sparseMatrix[row_capacity*column_capacity]; // Search and store int c=0; for(int i = 0; i < Input.length; i++) for(int j = 0; j < Input[i].length; j++) if(Input[i][j] != 0) returnList[c++] = new sparseMatrix(i,j,Input[i][j]); // Compress (reduction of array size) sparseMatrix[] temp = new sparseMatrix[c]; System.arraycopy(returnList,0,temp,0,c); returnList = temp; return returnList; } public static void main(String[] args) { sparseMatrix[] compressed = new sparseMatrix[row_capacity*column_capacity]; double[][] SampleGraph = new double[100][500]; for(int i=0;i<100;i++) for(int j=0;j<500;j++) SampleGraph[i][j]=0; SampleGraph[0][5] = 100.5; SampleGraph[1][10] = 20.5; SampleGraph[25][50] = 67; CompressMatrix nostatic = new CompressMatrix(); compressed = nostatic.compress(SampleGraph); // Print System.out.println("The compressed form:"); for (int k = 0; k < compressed.length; k++) System.out.println("("+compressed[k].row+", "+compressed[k].column+") -> "+compressed[k].value); } } // end of class