ich diese CSV-Datei bekam:Sortieren einer Liste von CSVRecords (Apache Commons)
User ID,First Name
3,David
4,Ruby
10,Ruby
die Ich mag würde aufsteigend bestellen Sie die folgende Methode verwenden:
@Override
public void sort(InputStream in, OutputStream out, String field_name, Comparator<CSVRecord> comparator) throws IOException {
Reader inputStreamReader = new InputStreamReader(in);
Iterable<CSVRecord> csvRecords = CSVFormat.RFC4180.withFirstRecordAsHeader().parse(inputStreamReader);
List<CSVRecord> csvRecordsList = Lists.newArrayList(csvRecords);
Collections.sort(csvRecordsList,comparator);
Writer outputStreamWriter = new OutputStreamWriter(out);
CSVPrinter cvsPrinter = CSVFormat.RFC4180.print(outputStreamWriter);
cvsPrinter.printRecords(csvRecordsList);
cvsPrinter.flush();
cvsPrinter.close();
Das Problem ist, dass Collections.sort tut nichts. Dies ist das vergleichbare, das ich als Parameter zur Verfügung stelle:
Comparator<CSVRecord> comparator = (op1,op2) -> op2.get(field).compareTo(op1.get(field));
Was mache ich falsch?
Ich habe dies als Ausgang, wenn ich diesen Code ausführen: 4, "Ruby" 3, "David" 10, "Ruby" – user3727540
wie ist 'field' definiert? – oschlueter
wie folgt: final String field = "User ID"; – user3727540