Ich erstelle einen Komparator, der mehrspaltige Sortierfunktionen für eine begrenzte Zeichenfolge bietet. Ich verwende derzeit die Split-Methode aus der String-Klasse als meine bevorzugte Wahl für die Aufteilung des rohen Strings in Token.
Ist dies die leistungsstärkste Methode, um den rohen String in ein String-Array zu konvertieren? Ich werde Millionen von Zeilen sortieren, also denke ich, dass der Ansatz wichtig ist.
Es scheint gut zu laufen und ist sehr einfach, aber unsicher, ob es in Java einen schnelleren Weg gibt.
So funktioniert die Sortierung in meinem Komparator:
public int compare(String a, String b) {
String[] aValues = a.split(_delimiter, _columnComparators.length);
String[] bValues = b.split(_delimiter, _columnComparators.length);
int result = 0;
for( int index : _sortColumnIndices ) {
result = _columnComparators[index].compare(aValues[index], bValues[index]);
if(result != 0){
break;
}
}
return result;
}
Nach dem Benchmarking der verschiedenen Ansätze, ob Sie es glauben oder nicht, war die Split-Methode mit der neuesten Version von Java die schnellste. Sie können meinen fertigen Komparator hier herunterladen: https://sourceforge.net/projects/multicolumnrowcomparator/
StringUtils.split[PreserveAllTokens](text, delimiter)
.