プログラマメモ2 - programmer no memo2

[java]行と列をいれかえる 2009/10/15

行と列をいれかえます。

どんなことをしたいかというと下記のようにしたいわけです。

a b c
1 2 3
e f g
4 5 6

a 1 e 4
b 2 f 5
c 3 g 6


さらにこんな感じ。
1 2 3 4
5 6 7 8
a b c d
e f g h

1 5 a e
2 6 b f
3 7 c g
4 8 d h


コードこんな感じ。

public class TestR_C {
public static void main(String[] args) {
String[][] ss = new String[][] { { "a", "b", "c" }, { "1", "2", "3" },
{ "e", "f", "g" }, { "4", "5", "6" } };
print(ss);
System.out.println();
print(a(ss));
System.out.println();
ss = new String[][] { { "1", "2", "3", "4" }, { "5", "6", "7", "8" },
{ "a", "b", "c", "d" }, { "e", "f", "g", "h" } };
print(ss);
System.out.println();
print(a(ss));
}

static String[][] a(String[][] ss) {
int r = 0;
int c = ss.length;
{
for (String[] s : ss) {
if (r < s.length)
r = s.length;
}
}

String[][] ss2 = new String[r][c];

int rp = 0;
for (String[] s : ss) {
int cp = 0;
for (String val : s) {
ss2[cp][rp] = val;
cp++;
}
rp++;
}

return ss2;
}

static void print(String[][] ss) {
for (String[] s : ss) {
for (String val : s) {
System.out.printf("%s ", val);
}
System.out.println();
}
}

}

: