Estoy construyendo un comparador que proporciona la capacidad de clasificación de varias columnas en una cadena delimitada. Actualmente estoy usando el método de división de la clase String como mi opción preferida para dividir la cadena sin procesar en tokens.
¿Es esta la mejor manera de convertir la cadena sin procesar en una matriz de cadenas? Ordenaré millones de filas, así que creo que el enfoque es importante.
Parece funcionar bien y es muy fácil, pero no estoy seguro si hay una forma más rápida en Java.
Así es como funciona el tipo en mi 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;
}
Después de comparar los diversos enfoques, lo creas o no, el método de división fue el más rápido con la última versión de Java. Puede descargar mi comparador completo aquí: https://sourceforge.net/projects/multicolumnrowcomparator/
StringUtils.split[PreserveAllTokens](text, delimiter)
.