Ich versuche, eine Textdatei zu sortieren, die durch Tabulatoren getrennt ist und versucht, nach dem dritten Feld className zu sortieren. Ich werde es dann in einer Tabelle anzeigen. Ich habe den folgenden Teil geschrieben, aber er sortiert nicht richtig. Irgendwelche Ideen, wo ich falsch liege?Vergleichen mit Collections.sort
public void sortFile(){
BufferedReader reader = null;
BufferedWriter writer = null;
//Create an ArrayList object to hold the lines of input file
ArrayList<String> lines = new ArrayList<>();
try{
//Creating BufferedReader object to read the input file
reader = new BufferedReader(new FileReader("pupilInfo.txt"));
//Reading all the lines of input file one by one and adding them into ArrayList
String currentLine = reader.readLine();
while (currentLine != null){
lines.add(currentLine);
currentLine = reader.readLine();
}
Collections.sort(lines, (String s1, String s2) -> {
s1 = lines.get(0);
s2 = lines.get(1);
String [] line1 = s1.split("\t");
String [] line2 = s2.split("\t");
String classNameLine1 = line1[2];
String classNameLine2 = line2[2];
System.out.println("classname1=" + classNameLine1);
System.out.println("classname2=" + classNameLine2);
int sComp = classNameLine1.compareTo(classNameLine2);
return sComp;
});
//Creating BufferedWriter object to write into output temp file
writer = new BufferedWriter(new FileWriter("pupilSortTemp.txt"));
//Writing sorted lines into output file
for (String line : lines){
writer.write(line);
writer.newLine();
}
}catch (IOException e){
}
finally{
//Closing the resources
try{
if (reader != null){
reader.close();
}
if(writer != null){
writer.close();
}
}catch (IOException e){
}
}
}
's1 = Zeilen.get (0); s2 = lines.get (1); 'Was zum Teufel machst du? – user2357112
Wenn Sie die zwei Zeilen löschen, die @ user2357112 identifiziert hat, wäre es ein guter Anfang, Ihr Problem zu beheben. –
Der Komparator, den Sie an 'Collections.sort' übergeben, wird bereits in den Zeichenfolgen übergeben, die verglichen werden sollen (von Ihrer ArrayList), Sie müssen sie also nicht manuell festlegen. Darüber hinaus überschreiben Sie tatsächlich die korrekten Werte, die an den Komparator übergeben werden. –