Sunday, June 25, 2017

Transpose Matrix

package com.test;

import java.util.ArrayList;
import java.util.List;

public class Transpose {
public static void main(String[] args) {
List<List<String>> data = getData();
System.out.println("\n--------------------------Before Transpoese------------------------");
for (int row = 0; row < data.size(); row++) {
List<String> colLst = data.get(row);
System.out.println("  ");
for (int i = 0; i < colLst.size(); i++) {
String cell = colLst.get(i);
System.out.print("  "+cell);
}
}
System.out.println("\n--------------------------After Transpoese------------------------");
List<List<String>> transposedData = transposeData(data);
for (int row = 0; row < transposedData.size(); row++) {
List<String> colLst = transposedData.get(row);
System.out.println("  ");
for (int i = 0; i < colLst.size(); i++) {
String cell = colLst.get(i);
System.out.print("  "+cell);
}
}
}

private static List<List<String>> transposeData(List<List<String>> data){

List<String> rowList = new ArrayList<String>();
List<List<String>> colList = new ArrayList<List<String>>();

for (int row = 0; row < data.get(0).size(); row++) {
rowList = new ArrayList<String>();
for (int col = 0; col < data.size(); col++) {
String d = data.get(col).get(row);
rowList.add(d);
}
colList.add(rowList);
}

return colList;
}


private static List<List<String>> getData(){
List<List<String>> data = new ArrayList<List<String>>();

List<String> dataRow = new ArrayList<String>();
dataRow.add("1");
dataRow.add("A");
dataRow.add("0");
dataRow.add("-");
data.add(dataRow);

dataRow = new ArrayList<String>();
dataRow.add("2");
dataRow.add("B");
dataRow.add("1");
dataRow.add("-");
data.add(dataRow);

dataRow = new ArrayList<String>();
dataRow.add("3");
dataRow.add("C");
dataRow.add("1");
dataRow.add("");
data.add(dataRow);

dataRow = new ArrayList<String>();
dataRow.add("4");
dataRow.add("D");
dataRow.add("2");
dataRow.add("");
data.add(dataRow);

dataRow = new ArrayList<String>();
dataRow.add("5");
dataRow.add("E");
dataRow.add("2");
dataRow.add("");
data.add(dataRow);

dataRow = new ArrayList<String>();
dataRow.add("6");
dataRow.add("F");
dataRow.add("3");
dataRow.add("");
data.add(dataRow);

dataRow = new ArrayList<String>();
dataRow.add("7");
dataRow.add("G");
dataRow.add("3");
dataRow.add("");
data.add(dataRow);

dataRow = new ArrayList<String>();
dataRow.add("8");
dataRow.add("H");
dataRow.add("7");
dataRow.add("");
data.add(dataRow);

dataRow = new ArrayList<String>();
dataRow.add("9");
dataRow.add("I");
dataRow.add("7");
dataRow.add("");
data.add(dataRow);

return data;
}
}