Транспонирование таблицы

Транспонирование таблицы – это переворот таблицы, при котором строки становятся столбцами, а столбцы строками. Математически аналогично транспонированию матрицы, из школьной программы.
Пригодится транспонирование таблицы может в случае, если ваша таблица не умещается на экране в горизонтальном направлении, а в вертикальном направлении экран удобно прокручивать и читать.

В данном примере таблица записана в html тегах <tr><td> в строковую переменную table, которая и передаётся в функцию transpositionTable. Теги <table> в переменной table отсутствуют.

  1. Создаем нужные переменные.

Разбиваем строку функцией table.split(“tr>”); на строки и пишем в массив tr, то есть в каждый элемент массива записывается одна строка из таблицы вместе с html тегами, которые мы потом отфильтруем.

Разбиваем первый элемент массива tr функцией tr[0].split(“tr>”); на столбцы и пишем в массив td, то есть в каждый элемент массива записывается один столбец из первого элемента массива tr. Это нужно, чтобы потом посчитать столбцы.

Создаём двухмерный массив tran. Первое измерение будет равно количеству строк, а второе количеству столбцов.

  1. Преобразуем таблицу в двухмерный массив.

Запускаем первый внешний цикл с перебором строк. Операцией tr[i].replaceAll(“<tr>”,””); удаляем из текущей строки теги <tr>. Функцией tr[i].split(“td>”); разбиваем текущую строку и записываем результат в массив td.

Запускаем внутренний цикл с перебором полей строки. Операцией td[j].replaceAll(“<td>”,””); удаляем из текущего поля теги <td>. Записываем каждое поле в двухмерный массив tran [i] [j].

После полного прохода первого внешнего цикла мы получаем перевод данных нашей таблицы в двухмерный массив. То есть представление нашей таблицы в виде массива. Данные в массиве очищены от тегов.

  1. Записываем перевёрнутый массив в строку

Запускаем второй внешний цикл с перебором столбцов (полей). В строку  table_trans добавляем начальный тег <tr>.
Запускаем внутренний цикл с перебором строк. В строку  table_trans записываем данные из массива tran [j] [i], обёрнутую в теги <td>. Обратите внимание двухмерный массив tran тут перевёрнут, благодаря чему мы и транспонируем таблицу.

Подведём итоги.

В результате функция выводит строковую переменную table_trans, которая содержит перевёрнутую (транспонированную) таблицу.

В первом внешнем цикле мы преобразовали таблицу записанную в строку в двухмерный массив. Во втором внешнем цикле мы записали перевернутый массив в строку.

// Транспонирование таблицы,
// записанной в строку в HTML виде
public static String transpositionTable(String table){
    String [] tr = table.split("");
    String [] td = tr[0].split("");
    String [][] tran = new String [tr.length][td.length];
    String table_trans="";
 
    for(int i=0; i","");
        td = tr[i].split("");
        for(int j=0; j","");
            tran[i][j]=td[j];
     }
    }
    for(int i=0; i";
        for(int j=0; j"+tran[j][i]+"";
        }
        table_trans=table_trans+"";
    }
    return table_trans;
}
Поделись с друзьями:

Оставьте комментарий