Buduję komparator, który umożliwia sortowanie wielu kolumn na ograniczonym łańcuchu. Obecnie używam metody split z klasy String jako preferowanego sposobu dzielenia surowego ciągu na tokeny.
Czy to jest najlepszy sposób na konwersję surowego ciągu znaków na tablicę ciągu znaków? Będę sortować miliony wierszy, więc myślę, że podejście ma znaczenie.
Wydaje się, że działa dobrze i jest bardzo łatwy, ale nie ma pewności, czy w Javie jest szybszy sposób.
Oto jak działa sortowanie w moim Komparatorze:
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;
}
Po analizie porównawczej różnych podejść, wierzcie lub nie, metoda podziału była najszybsza przy użyciu najnowszej wersji Java. Mój ukończony komparator możesz pobrać tutaj: https://sourceforge.net/projects/multicolumnrowcomparator/
StringUtils.split[PreserveAllTokens](text, delimiter)
.