Sto creando un comparatore che fornisce funzionalità di ordinamento multi-colonna su una stringa delimitata. Attualmente sto usando il metodo split dalla classe String come la mia scelta preferita per dividere la stringa grezza in token.
È il modo migliore per convertire la stringa grezza in un array di stringhe? Ordinerò milioni di righe, quindi penso che l'approccio sia importante.
Sembra funzionare bene ed è molto semplice, ma non sono sicuro che ci sia un modo più veloce in Java.
Ecco come funziona l'ordinamento nel mio comparatore:
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;
}
Dopo aver confrontato i vari approcci, che ci crediate o no, il metodo split è stato il più veloce usando l'ultima versione di java. Puoi scaricare il mio comparatore completo qui: https://sourceforge.net/projects/multicolumnrowcomparator/
StringUtils.split[PreserveAllTokens](text, delimiter)
.