T
_thomas_
Gast
Hallo zusammen
Ich möchte eine Datenstruktur machen, welche ich wie eine Matrix verwenden kann mit verschiedenen Typen pro Spalte.
Nun will ich das ganze als Liste imlementieren, wobei die Schwierigkeit ist, dass ich die Typen der Spalten zur Kompilierzeit noch nicht kenne.
Ein Beispiel:
Ein csv-File oder eine DB-Tabelle kann folgendermassen aussehen:
id name geb
1 paul 01.10.1970
2 hans 01.10.1971
Und daraus möchte ich eine Datenstruktur bauen, welche die folgenden Typen für die Spalten hat:
DataFrame[int, String, java.lang.Date]
Ein erster Versuch:
Nun stehe ich an einem Punkt wo ich nicht genau weiss, ob ich vollkommen auf dem Holzweg bin oder nicht.
1. müsste ich sowas wie Class.forName("java.lang.String[]") haben
2. ist mein Ansatz wirklich die Lösung für mein Problem?
Die Methode sollte schlussendlich auch csv-Files einlesen können und ein DataFrame erzeugen. Der obige Code ist also nur ein DB-spezifisches Beispiel.
Bin dankbar für jeglichen Kommentar und jeden Hinweis...
Danke und Gruss
Thomas
Ich möchte eine Datenstruktur machen, welche ich wie eine Matrix verwenden kann mit verschiedenen Typen pro Spalte.
Nun will ich das ganze als Liste imlementieren, wobei die Schwierigkeit ist, dass ich die Typen der Spalten zur Kompilierzeit noch nicht kenne.
Ein Beispiel:
Ein csv-File oder eine DB-Tabelle kann folgendermassen aussehen:
id name geb
1 paul 01.10.1970
2 hans 01.10.1971
Und daraus möchte ich eine Datenstruktur bauen, welche die folgenden Typen für die Spalten hat:
DataFrame[int, String, java.lang.Date]
Ein erster Versuch:
Code:
ResultSetMetaData rsmd = rs.getMetaData(); //rs = ResultSet z.B. einer "SELECT * FROM x" query
int ncol = rsmd.getColumnCount();
List<Class> columns = new ArrayList<Class>(ncol);
int colType;
for (int i = 0; i < ncol; i++) {
colType = rsmd.getColumnType(i + 1);
switch (colType) {
case Types.INTEGER:
columns.add(Class.forName("java.lang.Integer"));
break;
case Types.CHAR:
case Types.VARCHAR:
columns.add(Class.forName("java.lang.String"));
break;
default:
System.err.println("not yet implemented type: " + colType);
break;
}
}
Nun stehe ich an einem Punkt wo ich nicht genau weiss, ob ich vollkommen auf dem Holzweg bin oder nicht.
1. müsste ich sowas wie Class.forName("java.lang.String[]") haben
2. ist mein Ansatz wirklich die Lösung für mein Problem?
Die Methode sollte schlussendlich auch csv-Files einlesen können und ein DataFrame erzeugen. Der obige Code ist also nur ein DB-spezifisches Beispiel.
Bin dankbar für jeglichen Kommentar und jeden Hinweis...
Danke und Gruss
Thomas