extrahieren von Daten aus csv-Datei und setzen Sie " 2D-Array - refactoring
Ich lese Daten aus einer csv-Datei und viel mehr Bequemlichkeit für mich ist dort zu 2D-array (meiner Meinung nach ist es der einfachste Weg, um die Arbeit mit dem "Zeitplan" - Daten).
Jede Datei Zeile enthaltenen Informationen in folgendem format:
Instructor, Course, Group, Student, Result
wie folgt Beispiel:
Paul Schwartz,Introduction to Computer Architecture,I1,Ben Dunkin,88
Muhamed Olji,Object Oriented Programming,I4,Mike Brown,73
Aber mein code braucht etwas vereinfachen. Aber ich weiß nicht wie ich es einfacher machen und Fragen, von Sie.
Code:
private String[][] fileContent(String pathToCSVFile) {
final int ROWS = 100;
final int COLUMNS = 5;
String fileData[][] = new String[ROWS][COLUMNS];
Scanner scanner = new Scanner(pathToCSVFile);
boolean done = false;
int i, j;
while (!done) {
for (i = 0; i >= 0; i++) {
for (j = 0; j >= 0; j++) {
String str[] = scanner.nextLine().split(",");
for (int element = 0; element < str.length; element++) {
fileData[i][element] = str[element];
if (i >= ROWS) {
Arrays.copyOf(fileData, fileData.length * 2);
}
}
}
}
if (!scanner.hasNextLine()) done = true;
}
return fileData;
}
- Wie gestalten Sie dieses code-snippet für eine bessere Einfachheit?
- Gibt keine bessere Möglichkeit für einen teilweise gefüllten array (als
Arrays.copyOf(fileData, fileData.length * 2)
)?
- Wenn Einfachheit ist Ihr Ziel, verwenden Sie eine CSV-Bibliothek, wie openCSV, die eine
List<String[]> lines = new CSVReader(reader).readAll();
Methode... Methode wird dann ein one-liner (ok, vielleicht zwei). - Sollten Sie die Buchung solcher Fragen auf codereview.stackexchange.com. Der Standort sollte besser geeignet sein.
- Ich versucht auf diese Weise, aber einige problem zu konvertieren von der Liste zu arrays es ist ein bisschen problematisch. Jede Anregung sind hier auch erhältlich.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit openCSV, können Sie eine Liste mit allen Linien und konvertieren es in ein array (oder halten Sie einfach die Liste):
(mit Java 7 try-mit-Ressourcen syntax)
Erste von allen, seien Sie vorsichtig mit diesen for-Schleifen. Sie sind "fast" undefined Schleifen, denn Sie beginnen mit i,j=0, und die Schleife, während >=0 (immer, bis Sie überlauf in eine negative Zahl).
Und warum brauchen Sie Sie überhaupt? Ich denke, mit der Sie während und für die(element -) Sie sind fertig, richtig?
Etwas ähnliches (ich habe nicht versucht, ist nur zu erklären, das Konzept)
By the way, warum nicht Sie verwenden Objekte, wie eine ArrayList? Es würde Ihr Leben leichter machen, so dass Sie nicht haben, um sorgen über die Handhabung des Speichers. Sie nur neue Objekte hinzufügen.
Etwas wie ein
ArrayList <ArrayList <String>>
Result
undGroup
und zeigen der Spitze der Studenten, wie1. Ben Dunkin 88;
. Aber ich weiß nicht, wie genau diese Art<ArrayList <String>
und nach dieser show treffen Sie sich mit der Studenten-Namen?ArrayList <YourClass> al;
Sie tun könnenCollections.sort(al);
zu Sortieren das array. Und alle diese Objekte initialisiert mit der OpenCSV library, natürlich. Sie sollten nicht das Rad neu erfinden.