Estou construindo um comparador que fornece capacidade de classificação de várias colunas em uma String delimitada. Atualmente, estou usando o método split da classe String como minha escolha preferida para dividir a String bruta em tokens.
Essa é a melhor maneira de converter a String bruta em uma matriz String? Vou classificar milhões de linhas, então acho que a abordagem é importante.
Parece funcionar bem e é muito fácil, mas não tenho certeza se existe uma maneira mais rápida em java.
Aqui está como a classificação funciona no meu Comparador:
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;
}
Depois de comparar as várias abordagens, acredite ou não, o método split foi o mais rápido usando a versão mais recente do java. Você pode fazer o download do meu comparador completo aqui: https://sourceforge.net/projects/multicolumnrowcomparator/
StringUtils.split[PreserveAllTokens](text, delimiter)
.